【问题标题】:Java - decompile & recompile - for the noobieJava - 反编译和重新编译 - 适合新手
【发布时间】:2013-10-24 16:23:00
【问题描述】:

第一次在这里发帖,所以请放轻松:)

我在这里浏览了很多内容,看到了很多间接答案,但没有任何东西真正为我指明了正确的方向(或者我应该说有帮助)。

情况是这样,我们从一家现已倒闭的公司获得了这个 java 应用程序。我们的一个人设法获得了源代码,但一直不可用,所以我不得不采取其他措施来尝试获得我需要的更改。我使用 jd-gui 找到了我需要修改的类文件以及行(我需要修改的只有 3 行......)。 jd-gui 会将类文件保存为 .java 文件,我相当确定如果我可以将 .java 文件恢复到类文件中,我只需要使用 winrar 将其放回。我在这里和那里读过,从中获取一个类文件并不是那么简单。

我尝试使用 eclipse 创建一个新项目,我尝试了 javac,它抱怨一些与任何东西无关的代码行,我的猜测是它真的告诉我有一个它无法处理的函数因为它在另一个类文件中定义,blah blah blah ...

为什么这么复杂? “已编译”的 java 文件(类?)引用了它需要的其他类文件,我不希望编译器运行程序,只需将其放回原处并假设我的路径正确。我天生不是程序员,一直在强迫自己喂 javascript(是的,不是同一件事),但我真的需要做一些小改动,然后再也不碰它了。

所以,我的问题是,什么是简单的解决方案(除了等待源代码 - 这可能是从现在到宇宙最终热死之间的某个时间......)

【问题讨论】:

  • 即使你有编译好的源码,也不代表你有源码使用的包。您必须获取这些包的 .jar 文件并将它们导入到您在 Eclipse 中的构建路径中。只有这样你才能重建那个项目。
  • 试试 cavaj 反编译器。
  • 该死的,太快了!所以在主 jar 文件中有一堆 jar 文件,比如“commons-cli-1.2.jar”和一堆其他文件。你指的是这个吗?
  • Deepak,我会看看并试一试。谢谢!
  • 是的,无论它们是否包含在您使用 jd-gui 反编译的原始 jar 中,您要么必须将它们放入 Eclipse 中,要么在网上找到它们并将它们放入 Eclipse。无论如何,它们都必须放入您的构建路径中。如果您可以在问题中发布一个通用示例,它可能有助于生成更有用和/或更全面的答案。

标签: java class jar compilation decompiler


【解决方案1】:

好吧,我相信您需要一个包含更改的类文件,然后您可以使用 WinRar 或类似的方法将其修补到 jar 中。

试试这个。 在 Eclipse 中转到 . 窗口 > 首选项 > 运行/调试 > 启动。

根据需要更改设置。 (删除任何关于编译错误的提示和终止设置) 如果您想使用部分编写的类运行测试,这非常有用。 这应该会生成您需要的类文件,然后您可以对其进行修补。 祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多