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

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

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

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

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

我使用了表达式function…在我多年的Java调试中使用了很多次。为什么现在会发生这种情况?

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

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

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

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

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

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

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

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

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

 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 } }); } 

这个bug可以复制到当前的Eclipse Neon 4.7。

我遇到了同样的问题,我在代码中删除了一个通用方法。 它对我有用。

(假设你正在编译1.5+代码)我有同样的问题,这就是我做的修复它:

  • 确保您的Java编译器版本是1.5+
  • 修复与该类相关的所有语法/类相关错误。 我的类路径中有许多缺少的依赖项。
  • 确保该特定项目的JRE也是1.5+