为什么我不断收到“求值必须包含表达式或格式良好的语句块”?

问题描述 投票:0回答:7

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

src
的值。

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

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

我添加一个表达式

src
来评估,我得到 Evaluations must contain either an expression or a block of well-formed statements

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

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

java eclipse debugging
7个回答
14
投票

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

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

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


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 上重现。


2
投票

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

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


2
投票

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


2
投票

(假设您正在编译 1.5+ 代码)我遇到了同样的问题,这是我修复它的方法:

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

1
投票

根据https://stackoverflow.com/a/21763943/733092,当类包含像

这样的泛型方法时,就会发生这种情况
public <T extends something> T myMethod() {};

0
投票

Eclipse 说我有编译错误。尽管 Maven 构建良好且项目运行。我必须去属性| Java 构建路径 |图书馆 |添加外部 JAR... |添加jar eclipse想要解决错误。错误被删除后,我就可以计算表达式了。

Eclipse 4.27

© www.soinside.com 2019 - 2024. All rights reserved.