eclipse:如何将 Java 程序作为 .jar 文件进行调试?

Posted

技术标签:

【中文标题】eclipse:如何将 Java 程序作为 .jar 文件进行调试?【英文标题】:eclipse: how to debug a Java program as a .jar file? 【发布时间】:2010-12-16 11:28:49 【问题描述】:

我使用ant 在 Eclipse 中创建 .jar 文件。效果很好。

我正在处理一个 .jar 文件,它希望代码位于 .jar 文件中(它在与 .jar 文件相同的目录中查找 .properties 文件)——标准的 Eclipse“运行”和“调试”菜单执行指定 Java 类的 main() 方法……但它们是从包含已编译类文件的目录中执行的,而不是 jar 文件。有没有办法改变这种行为,以便 Eclipse 从适当的 .jar 文件中运行代码?

(我现在的解决方法是在外部运行 .jar 文件,根据 Dave Ray's answer to one of my other questions 暂停等待调试器。)

【问题讨论】:

【参考方案1】:

你可以通过像这样运行你的 jar 来使用远程调试

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar yourJar.jar

然后从您的 IDE 连接到该端口

【讨论】:

这个对我有用; Java 应用程序启动需要一个主类。 在 Eclipse 中,转到“调试配置...”并创建一个新的“远程 Java 应用程序”。【参考方案2】:

是的,您可以创建自定义“Run Configuration”: 即,一个“Java Application”,带有:

Classpath 选项卡从其默认内容(.class 目录)中清空并添加了 jar Source 选项卡及其默认内容(应参考项目的src 目录)

可以运行或调试一个这样的配置。

(以 jars 作为用户条目的自定义配置示例)

【讨论】:

这不适用于 IntelliJ Idea,对吧? (需要指定模块) @den:不直接适用(我对 IntelliJ 的了解不够,无法立即想到类似的程序) _@VonC:你不能运行不是你的模块之一的应用程序(我猜是eclipse“语言”中的项目)。似乎一个可行的解决方案正在设置远程应用程序运行。 @den:正确,远程应用程序应该可以工作(实际上可以使用任何 IDE) 这听起来像是一个很好的解决方案,但我认为您需要提供一个 Main 类;我认为下面IonSpin的回答与此等价,但在进行远程调试时无需指定主类。【参考方案3】:

我刚刚找到以下链接,它描述了远程调试 Java jar 的整个过程。

Debug Java applications remotely with Eclipse

主要部分有:

目标 VM 充当调试服务器

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address="8000" -jar 测试.jar

目标 VM 充当调试客户端

java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y -jar test.jar

根据您运行目标虚拟机、客户端或服务器的方式,您必须对 Eclipse 进行不同的配置。

如果您将目标虚拟机作为客户端启动,则为 Eclipse 配置

如果您将目标虚拟机作为服务器启动,则进行 Eclipse 配置

文章还对主题进行了温和的介绍。

【讨论】:

【参考方案4】:

我会尝试使代码更健壮,使属性文件位置可配置,或者只是让它从类路径中加载。然后,您可以直接将属性文件添加到 eclipse 类路径中。问题解决了!

【讨论】:

我猜是这样javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html

以上是关于eclipse:如何将 Java 程序作为 .jar 文件进行调试?的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse正式代替Oracle接管Java EE

如何从 Eclipse 设置 java.library.path

eclipse中怎么查看classpath路径

如何通过java驱动程序在mongodb中存储38位整数

如何使用 Eclipse 创建“testng.xml”

如何在导出的 Eclipse 产品中包含作为配置运行