【问题标题】:How to debug a command line compiled Java .class file using Eclipse IDE?如何使用 Eclipse IDE 调试命令行编译的 Java .class 文件?
【发布时间】:2020-09-07 21:31:18
【问题描述】:

我是一名具有强大 C++ 背景的程序员,但对 Java 世界很陌生。现在我有一个关于调试的问题。

如何使用 Eclipse IDE 调试预编译的 Java .class 文件?而且我发现通过谷歌搜索找到答案确实不是一件容易的事。

为了让我的问题真正准确且不误导,我将其阐述如下。

我在下面有两个 .java 源文件:

$
├── src             
│   └── mypkg1      
│       └── Timeline.java 
└── test                  
    └── mypkg1            
        └── TimelineTest.java

在根文件夹($)中,我可以使用两个命令编译和运行TimelineTest.java

javac -classpath ./src test/mypkg1/TimelineTest.java

java  -classpath ./src:./test mypkg1.TimelineTest       

现在我有$/test/mypkg1/TimelineTest.class,其中包含 Java 字节码。

那么如何在TimelineTest.class 上进行源码级调试呢?

我试过了,但还没有成功。我创建了一个 Eclipse 项目为$/test/mypkg1/.project,然后为它创建一个调试配置,如下所示。但是,当开始调试时,我收到红色错误消息:

错误:无法找到或加载主类 TimelineTest

原因:java.lang.NoClassDefFoundError: mypkg1/TimelineTest(错误 名称:时间线测试)

那么正确的做法是什么?

这里的关键要求是,我不应该费心做冗长的 Eclipse 项目设置,鼠标在这里和那里点击数百次。我想要的是快速加载二进制文件并开始调试。你知道,这在 C++ 世界中绝对是正确的。例如,使用 Visual Studio IDE,文件 → 打开项目 → 选择一个 EXE 文件作为项目文件,这就是您告诉 VS IDE 调试该 EXE 的方式。打开“项目”后,按F10,调试器在main()的第一行停止被调试对象,就这么简单。

如何使用 Eclipse 实现相同的目标?或者,推荐其他一些可行的 Java 调试器?

== Timeline.java ==

package mypkg1;

public class Timeline {

    private int fetchCount;

    public void setFetchCount(int fetchCount) {
        this.fetchCount = fetchCount;
    }

    public int getFetchCount() {
        return fetchCount;
    }
}

== TimelineTest.java ==

package mypkg1;

public class TimelineTest {

    public static void main(String[] args) {

        Timeline timeline = new Timeline();
        int expected = 5;

        timeline.setFetchCount(expected);
        int actual = timeline.getFetchCount();

        System.out.println("Fetch = "+actual);
    }
}

【问题讨论】:

    标签: java eclipse debugging


    【解决方案1】:

    您可以在启用远程调试的情况下运行您的代码,并将您的 Eclipse 调试器附加到该正在运行的应用程序。

    Here解释的很详细。

    【讨论】:

    • 谢谢。是一种可行的方式。但是,第一次尝试时,我遇到了很多错误的行为。 youtu.be/C_CP4jnz5Co
    【解决方案2】:

    这里有一些问题。您无需为此查看远程调试。

    您需要编辑项目属性(在资源管理器中右键单击项目名称并选择“属性”)。您需要编辑“Java 构建路径”。在“Source”选项卡中,您需要有两个源目录,“src”和“test”。

    当你这样做时,它会发现你有两个源文件,一个在每个文件夹和包中。您可以展开文件夹以查看它们,或者您可以转到“导航”菜单并选择“打开类型”(并注意键盘快捷键以更快地到达那里)并输入您的班级名称。这将在代码编辑器中打开该类。

    此时,假设该类有一个带有正确签名的“main”方法,您可以在代码编辑器中右键单击并选择“Debug As”,然后选择“Java Application”。在执行此操作之前,您可能希望在“main”方法的第一行设置断点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2016-03-31
      相关资源
      最近更新 更多