在JAR中更改已编译的java .class文件

时间:2016-02-09 09:45:46

标签: java .class-file

我的要求:我已解压缩jar,然后在反编译之后将.class文件更改为{{1}档案。
这个.java文件几乎没有错误,因为它使用了来自.java中其他位置的方法变量等少数内容。
现在我想将JAR文件更改为.java文件,然后想要添加.class并查看我的更改是否有效。

背景

  1. 我已经解压缩了ATU Jar文件和 de-complied JAR
  2. 我现在有ATUReportsListener.class文件,我做了一些更改 它。
  3. 现在我想再次转换为ATUReportsListener.java可执行文件和包 进入JAR。但由于.class的东西很少 这取决于原ATU JAR的其他文件。我不是 能够编译它。
  4. 我该怎么做? 转换为ATUReportsListener.java文件。请提供宝贵的意见。

6 个答案:

答案 0 :(得分:1)

.class文件仅在编译后创建。反编译并进行更改不会使其具有相同的字节代码。你需要对这些错误进行排序并再次编译

答案 1 :(得分:0)

.class为(成功编译的代码,即#34;可以在JVM"上运行)生成字节代码。因此,您必须允许编译器尝试构建代码以了解操作是否成功且无错误。

来源:https://en.wikipedia.org/wiki/Java_class_file

祝你好运。

答案 2 :(得分:0)

如前所述,你根本无法做到。

  

Java类文件是包含Java字节码的文件(带有.class文件扩展名),可以在Java虚拟机(JVM)上执行。 Java类文件由 Java编译器从包含Java类的Java编程语言源文件(.java文件)生成。如果源文件有多个类,则每个类都编译为单独的类文件。

因此,如果不编译源代码,则无法获得 .class 文件。

答案 3 :(得分:0)

不,你不能直接将java文件转换为类文件。 解决您的问题首先是反编译整个jar文件类,然后对源文件进行更改。编译它并制作jar文件。

答案 4 :(得分:0)

你问的是错误的问题。正确的问题是"如何修改已编译的Jar中的代码"。

正如您所发现的,反编译无法提供帮助,因为通常无法重新编译结果。相反,您需要在字节码级别修改代码。这样做的好处是,无论代码是什么样的,或者它是否被混淆,它都将始终有效。当然,缺点是您必须了解Java字节码,但它并不难理解。

您可以使用多种工具来编辑字节码。例如,Krakatau diassembler和汇编程序。 Konloch的Bytecode Viewer提供了一个GUI。

答案 5 :(得分:0)

这是解决方案。当然,我们要编译.java文件以获取.class文件。

对于使用JAR的解决方案:

  1. 使用反编译器(http://jd.benow.ca/
  2. 取消包装JAR
  3. 获取反编译文件的来源(您将获得包(全部) .java文件))
  4. 现在按照您的意愿进行更改
  5. 在Eclipse中创建一个JAVA项目并导入所有内容。
  6. 现在只需保存
  7. 您可以在bin文件夹中看到.class文件。
  8. 在原始可执行.class文件集中添加.class文件。
  9. 完成,再次将它包装在JAR中。(你可以使用eclipse和 出口为JAR)
  10. 感谢各位回应。