【问题标题】:Java Edit Jar FileJava 编辑 Jar 文件
【发布时间】:2014-01-09 09:35:47
【问题描述】:

我有一个包含几个类的 jar 文件。在那个罐子里有一个我想编辑的 Confirmation.class 文件。我使用 JAD 反编译了该类。然后我用记事本++编辑它并保存为.java文件。

现在我如何用其他类创建我的新 jar 文件?

其他文件格式是.class,我的是.java,有问题吗?

如果是,我如何编译我的 .java 类? (当我使用命令 javac Confirmation.java 它给出错误并需要其他类)

谢谢..

【问题讨论】:

  • 您的命令不正确。您必须告诉编译器在哪里可以找到 Confirmation.java 所依赖的 .java、.class 文件。在这里阅读。 docs.oracle.com/javase/7/docs/technotes/tools/solaris/… 提供 jar 的 lincence 是否允许更改源代码?
  • 我不知道如何在命令中调用多个类。谢谢。

标签: java compiler-construction jar edit decompiler


【解决方案1】:

你对其他jar有依赖吗?

如果是这种情况,您必须提前将它们放在编译器类路径中。

无论如何,只要反编译所有的包(我用jd-gui),改变类,编译,打开原来的jar作为一个zip,把新的类放在上面,你就完成了。

另一种方法是为缺少的依赖项创建虚拟类...

就个人而言,我真的不鼓励这种“逆向工程”使用已编译的包的方法,但我理解您无法访问原始源代码但您需要紧急修复某些问题的情况(例如:工作在一家公司中,您的代码来自地球另一端的外部提供商...)

【讨论】:

  • 是的,存在对另一个 jar 文件的依赖关系。正如你所说,我在公司工作,代码来自不同的提供商:)
  • 而您无权访问这些罐子?如果不是这样,我过去所做的,即使听起来“便宜”,也是创建虚拟空类以完全匹配我要编译的类的导入。
  • 不,我还有另一个罐子。但是没有必要改变它。我想要的只是为一个类添加一个变量和 get() set() 方法。
  • 不,您不能编辑。这只是对我正在使用的内容的评论。我不知道 JAD,但是使用 JD-GUI,您可以将所有包反编译成维护结构的 .java 类,这将帮助您进行更改然后重新编译
【解决方案2】:

您可以尝试在 Java IDE 中复制和粘贴代码,例如 EclipseNetBeans 等,并要求 IRC 为您编译。祝你有美好的一天:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多