2013-06-25 15 views
11

Trong mã của tôi, tôi đang cố gắng xuất giá trị src trong cửa sổ biểu thức.Tại sao tôi tiếp tục nhận được "Đánh giá phải chứa một biểu thức hoặc một khối câu lệnh đúng ngữ pháp"?

public void doIt() { 
    String src = "test"; 
    System.out.println(src); 
} 

Trong Eclipse. Tôi đặt một điểm ngắt trên một dòng 3, và tôi mở cửa sổ "Biểu thức".

tôi thêm một biểu src để đánh giá, và tôi nhận được Evaluations must contain either an expression or a block of well-formed statements

tôi đã sử dụng các biểu thức tính năng ... vô số lần trong những năm của tôi về Java gỡ lỗi .. Tại sao điều này xảy ra bây giờ?

Tôi vừa mới bắt đầu sử dụng Eclipse Juno .. vs Indigo. Họ có thay đổi cách biểu thức hoạt động không?

+0

bạn có chụp ảnh màn hình đó trong khi trình gỡ lỗi nằm trên dòng 2, 3 hoặc 4 không? nếu không thì 'src' nằm ngoài phạm vi –

+0

@MarcoForberg yessir - tôi rất tích cực. Nếu nó nằm ngoài phạm vi, nó sẽ nói rằng "src không thể được giải quyết thành biến" – sircapsalot

+4

Eclipse có thói quen xấu, Đức Chúa Trời biết tại sao, dừng việc đánh giá các biểu thức trong quá trình gỡ lỗi mà không có bất kỳ nguyên nhân hợp lý nào. cũng được hình thành và tất cả. Nhiều khả năng là một vấn đề về bộ nhớ hoặc một số loại tham nhũng đằng sau hậu trường. Trong trường hợp của tôi, làm sạch dự án và xây dựng lại nó từ đầu, đóng và mở lại các dự án và đóng và mở lại Eclipse (không theo thứ tự cụ thể) khiến tôi trên đường. – Gamb

Trả lời

2

Kiểm tra xem bạn đã cập nhật phiên bản của Eclipse, có vẻ như vấn đề này là fixed trong Eclipse 3.3

My Eclipse Phiên bản 3.8.2 và nếu tôi đánh giá sự biểu hiện trên dòng 2 sau đó tôi cũng đang nhận được lỗi tương tự nhưng tại dòng 3 nó đánh giá đúng.

7

Nếu mã của bạn sử dụng bất kỳ generics, bạn có thể muốn kiểm tra lỗi này:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=341232

Xảy ra trong tất cả các phiên bản của Eclipse lên đến 4.2. Trong các biểu thức generics ngắn nhất định khiến Eclipse hoàn toàn thất bại về bất kỳ đánh giá nào (vui lòng xem ví dụ này: https://bugs.eclipse.org/bugs/attachment.cgi?id=224760). Không chắc liệu mã của bạn có sử dụng bất kỳ generics nào không, nhưng nếu có, thì điều này có thể là nó. Lưu ý rằng nó là đủ để có một trong những generics phiền hà một nơi nào đó trong lớp học của bạn, không cần thiết trong phương pháp của bạn.

+0

nó đang sử dụng Generics ..hay đấy. – sircapsalot

+0

Tối đa 4,6 xác nhận - có thể do một lý do khác nhưng tôi không thể thấy phiếu. – displayname

0

Tôi đã gặp vấn đề tương tự và tôi xóa một phương pháp chung trong mã của mình. Nó làm việc cho tôi.

1

tôi chỉ cần bỏ ra rất nhiều thời gian để tìm ra rằng nếu bạn sẽ tạo ra một gói "Foo" và bên trong gói này, bạn sẽ tạo ra lớp được gọi là "Foo", như thế này:

package Foo; 

public class Foo{ 
    public Foo() {}; 
} 

Sau khi bạn sử dụng lớp này lần đầu tiên trong chương trình của mình, bạn sẽ không thể sử dụng các biểu thức nữa:

import Foo.Foo; //this is the devil i think 

public static void main(String[] args){ 
    EventQueue.invokeLater(new Runnable(){ 
     public void run(){ 
      //debug expressions works fine 
      Foo tmp = new Foo(); 
      //debug expressions wouldn't work anymore 
     } 
    }); 
} 

Lỗi này có thể được repuzused lên Eclipse Neon hiện tại 4.7.

Các vấn đề liên quan