为什么我要继续"评估必须包含一个表达式或一组格式良好的语句"?

dda*_*son 15 java eclipse debugging

在我的代码中,我试图src在表达式窗口中输出值.

public void doIt() {
    String src = "test";
    System.out.println(src);
}
Run Code Online (Sandbox Code Playgroud)

在Eclipse中.我在第3行设置断点,然后打开"表达式"窗口.

我添加了一个表达式src来评估,我得到了 评估必须包含表达式或格式良好的语句块

我使用了表达式功能...在我多年的Java调试中使用了一段时间.为什么现在会发生这种情况?

我刚刚开始使用Eclipse Juno ..与Indigo.他们改变了表达式的工作方式吗?

小智 9

如果您的代码使用任何泛型,您可能需要检查此错误:

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

在所有版本的Eclipse中发生,最高可达4.2.简而言之,某些泛型表达式会导致Eclipse在任何评估时完全失败(请参阅此示例:https://bugs.eclipse.org/bugs/attachment.cgi?id = 22467).不确定您的代码是否使用任何泛型,但如果是这样,可能就是这样.请注意,在您的课程中某处有一个麻烦的泛型就足够了,在您的方法中没有必要.


小智 5

我刚刚花了很多时间来弄清楚,如果您要创建一个包“Foo”,并且在这个包中您将创建一个名为“Foo”的类,如下所示:

package Foo;

public class Foo{
    public Foo () {};
}
Run Code Online (Sandbox Code Playgroud)

当您在程序中第一次使用此类后,您将无法再使用表达式:

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
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

此错误可以在当前的 Eclipse Neon 4.7 中重现。


jav*_*ean 2

检查您是否已更新 Eclipse 版本,看起来此问题已在 Eclipse 3.3 中修复

我的 Eclipse 版本是 3.8.2,如果我计算第 2 行的表达式,那么我也会收到相同的错误,但在第 3 行它的计算正确。