【问题标题】:How do I debug an external .jar file through eclipse?如何通过 Eclipse 调试外部 .jar 文件?
【发布时间】:2014-05-16 00:46:06
【问题描述】:

这很难解释,但我会尽力而为。 有一个 .jar 文件可以为锦标赛环境打开一个 GUI。它是独立的,我没有得到源代码。我需要用 Java 编写一个参加锦标赛的代理程序。当 .jar 文件打开时,我可以在 GUI 中指定代理类文件的路径。这工作正常。但我不确定如何调试它,因为 .jar 文件没有在 Eclipse 中打开。我尝试使用外部工具,它似乎运行 .jar 文件但 GUI 没有打开,所以我无法指定代理的路径。锦标赛环境文档并没有真正提供在没有 GUI 的情况下操作它的说明,所以我真的只需要使用 GUI。我可以通过什么方式通过 eclipse 运行这个文件,这样我就可以看到我自己的代理如何与环境一起工作并相应地进行测试/调试?

附加信息 - 这个 .jar 也可以作为一个库,我可以毫无问题地将其导入 Eclipse。

【问题讨论】:

  • 您可以编写使用此第 3 方依赖项的代码,但除非您有源代码,否则您无法在调试时单步执行。
  • 那么不可能吗?基本上,这是一场比赛,我们会提交我们的经纪人。锦标赛环境 GUI 指定 2 个对立代理的路径并举行“比赛”。但是如果不运行它就不可能调试我的代理代码,但这需要 GUI 并且是完全独立的。如果 GUI 遇到错误,它就真的崩溃了。没有办法通过 Eclipse 运行这个 GUI 并单步执行我自己的代理的源代码?
  • 您可以尝试“反编译”jar,但您所做的任何调试都将毫无用处。将其视为具有良好定义的 API 的黑盒并调试您自己的代码。
  • 如何运行 jar?您应该能够在调试模式下启动它,然后使用 eclipse 的远程应用程序调试功能进行连接。
  • 我不知道你说“把它当作一个黑匣子......”你的意思是什么,你能详细说明一下吗?另外,我通过双击 .jar 文件来运行 jar。它直接打开GUI。我还能在调试模式下以这种方式启动它并使用 Eclipse 的远程应用程序调试功能吗? (我以前从没听说过这个,所以我得查一下)我确实尝试过用 eclipse 运行 jar,但 GUI 打不开。

标签: java eclipse jar executable-jar


【解决方案1】:

很难说出这里发生的所有事情,但有一些事情可以提供帮助。

首先,您可以使用以下命令行选项通过 jar 启动您的应用:

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n

请注意,如果您需要调试启动代码,则需要设置“suspend=y”,因此应用会暂停启动,直到您从调试器连接。

在 Eclipse 中,连接到端口 8453。

其次,单步执行没有源代码的代码并非不可克服。安装“jd-eclipse”插件,您可以在 http://jd.benow.ca/ 获得该插件。这将使这成为可能。

【讨论】:

  • 10x 很多......这真的很有帮助
【解决方案2】:

我一直在使用 JAD Eclipse 插件对 jar 库进行逆向工程。 http://jadclipse.sourceforge.net/wiki/index.php/Main_Page

但是,值得注意的是,反编译的源代码与堆栈跟踪中的行号并不完全匹配。

【讨论】:

    猜你喜欢
    • 2011-03-31
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多