【问题标题】:Debug a compiled Java Equinox program调试已编译的 Java Equinox 程序
【发布时间】:2016-06-01 10:08:18
【问题描述】:

有没有办法调试通过 Eclipse Equinox 启动的 Java 应用程序? 类似于“.net 反射器”的东西适用于 C#。 我们有一个多年前由内部团队开发的大型程序,我们必须了解它的工作原理,以便我们可以用另一种语言重新创建它。 问题是我们没有任何源代码文件(一切都丢失了)。

现在应用程序的目录包含: - 目录“配置” - 目录“整合” - 目录“插件” - 目录“工具” - 目录“工作区” - starter.exe(以 Eclipse 徽标为图标) - 启动器.ini - 启动.jar

我真的希望有一种方法可以检索应用程序的工作方式。

谢谢:)

【问题讨论】:

  • 我认为你需要一个java反编译器,看看this
  • @niceman 我已经尝试过 jd-gui,但它不适用于使用 equinox 的应用程序(程序从 exe 启动)。另外它不允许我调试附加到正在运行的 exe / jar
  • java Decompilers 接受 .class 文件而不是 .exe(他们可能接受 .jar 文件,因为 jar 文件只是包含 .class 文件的存档),如果 jd-gui 不接受 jar 文件,取消归档(右键单击 -> 提取)以获取 .class 文件。
  • @niceman 是的,我知道.. 问题是我要调试的程序是使用 Equinox 构建的。所以我只有一个launcher.exe文件和插件文件夹中的一堆jar。没有别的
  • 对不起,我不在osgi,我不知道如何反编译:(

标签: java eclipse debugging osgi equinox


【解决方案1】:

看起来我设法解决了我的问题。这是我所做的:

  • 已下载 Eclipse Mars (4.5.2)
  • 在 Eclipse 中,我选择了“帮助”->“安装新软件”并添加了存储库站点“mchr3k - http://mchr3k-eclipse.appspot.com/”。
  • 从这里我下载了“Java decompiler Eclipse Plug-in”
  • 创建了一个新的临时 java 项目,并将我想调试的所有 .jar 添加到项目的构建路径中。
  • 在我要调试的应用程序目录中的“launcher.ini”中添加了这一行:“-Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8888,server=y,suspend=n "
  • 从 Eclipse 开始“远程调试”

通过这样做,我可以将 eclipse 调试器附加到我的应用程序并使用反编译源代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2014-04-15
    • 2010-12-26
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多