19

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

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

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

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

在我多年的 Java 调试中,我已经使用过表达式功能……无数次……为什么现在会发生这种情况?

我最近才开始使用 Eclipse Juno .. vs Indigo。他们是否改变了表达式的工作方式?

4

6 回答 6

11

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

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

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

于 2014-01-10T09:24:24.793 回答
5

我刚刚花了很多时间来弄清楚如果你要创建一个包“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
        }
    });
}

这个错误可以重现到当前的 Eclipse Neon 4.7。

于 2016-11-04T03:28:24.007 回答
2

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

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

于 2013-06-25T20:23:37.323 回答
2

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

于 2014-12-03T11:37:18.017 回答
2

(假设您正在编译 1.5+ 代码)我遇到了同样的问题,这是我为解决它所做的:

  • 确保您的 java 编译器版本为 1.5+
  • 修复与该类有关的所有语法/类相关错误。我的类路径中有许多缺失的依赖项。
  • 确保该特定项目的 JRE 也是 1.5+
于 2018-03-27T19:32:48.333 回答
1

根据https://stackoverflow.com/a/21763943/733092,当类包含通用方法时会发生这种情况

public <T extends something> T myMethod() {};
于 2020-01-09T18:39:58.187 回答