2013-06-25 25 views
9

Đối với một dự án nghiên cứu, tôi đang phát triển trên các nguồn OpenJDK với Eclipse. Đối với các mục đích gỡ lỗi, các biểu thức "Biểu thức" và "Hiển thị" của trình gỡ lỗi tích hợp là khá hữu ích. Khi bước qua mã của công cụ biên dịch javac, chế độ xem biểu thức không thành công trên một số lớp học. Sau đó, ngay cả các biểu thức đơn giản nhất cũng nhận được một số <error(s)_during_the_evaluation> trong cột giá trị của chúng. Các thông báo lỗi chi tiết là sau đó:Tại sao giao diện biểu thức của Eclipse không thành công trên một số lớp?

Evaluations must contain either an expression or a block of well-formed statements 

Tôi khá chắc chắn, tôi đã nhập biểu thức hợp lệ, như một công tắc đơn giản để các phương pháp gọi điện thoại (một đống khung hình cao hơn) làm cho lao động xem.

Tôi đã tải lên hai ảnh chụp màn hình hai làm cho vấn đề rõ ràng hơn:

Không-làm việc lớp JavacParser: Not-working class

lớp Working EndPosParser: Working class

Có ai đó từng trải qua một vấn đề tương tự hoặc biết lý do là gì hoặc làm thế nào để sửa chữa nó? Khi chuyển đổi giữa hai chế độ xem được hiển thị, tôi không làm gì khác ngoài việc tăng một khung ngăn xếp cao hơn. Cả hai biểu thức được dự kiến ​​sẽ được đánh giá trong cả hai trường hợp. Theo như tôi có thể đánh giá nó, hành vi không hiển thị chỉ xảy ra trong lớp JavacParser.

Cảm ơn!

+0

tôi tình cờ gặp rất nhiều báo cáo cũ và sửa lỗi cho lỗi này đặc biệt nhưng tất cả dường như có liên quan đến vấn đề cũ (tức là : các lớp học với Generics, với các phiên bản 3.1-3.8), bây giờ tôi đang ở trên 4.x + và vẫn thấy điều này. Hy vọng rằng ai đó sẽ tìm thấy một lời giải thích để nó có thể được báo cáo. –

+0

Tôi đã xoay sở để vượt qua điều đó bằng cách ghi đè phương thức toString(). Có thể muốn cho rằng một shot. Khá một cách hack-y để đạt được điều này mặc dù. Tôi sẽ cập nhật sau này nếu tôi đưa ra một giải pháp tốt hơn. –

Trả lời

0

Theo như tôi biết, các biểu thức được đánh giá trong ngữ cảnh của ngăn xếp hiện tại (trên cùng).

Có vẻ như ảnh chụp màn hình đầu tiên của bạn đã được chụp khi một đối tượng (EndPosParser) được xây dựng. Vì đối tượng của bạn chưa tồn tại, this không thể đánh giá được. Không thể đánh giá tham chiếu đến this cho đến khi chuỗi siêu cuộc gọi đạt đến Object.

Tôi không chắc tại sao không thể đánh giá được 1+2. Dự đoán tốt nhất của tôi là: Eclipse nhận ra các hàm tạo là phương thức không tĩnh và cố gắng đánh giá 1+2 trong ngữ cảnh không tĩnh. Nhưng điều này không thành công một lần nữa, bởi vì this chưa tồn tại.

Chỉnh sửa: Đó là một câu hỏi cũ chết tiệt Tôi chỉ cố gắng để trả lời ...