我有一个 myfile.jar 文件。我使用jd-gui反编译了myfile.jar中一个文件夹中的所有*.class。我在许多文件夹中得到许多 *.java 文件
在修复了一些*.java 中的一些代码之后,现在我想将所有*.java 重新编译回*.class,并将整个文件夹打包回myfile.jar。
我该怎么做呢?
(这是我第一次玩 java 代码。)
原文由 sandy 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
您需要一个 Java 开发工具包 (JDK)。这包括一个 Java 编译器(通常命名为
javac
)和一个 jar 归档器。假设您在目录名称
src
中有 java 文件(然后根据它们的包结构),您将使用编译所有文件。 (调整*的个数为目录层数,如果你只有一些文件夹里有源文件,也可以单独列出来。如果有些类依赖其他的,你可以省略其他的,编译器会发现并自动编译它们。)
如果程序需要外部库,请为它们提供
-classpath
参数。现在我们在目录
classdir
中拥有所有已编译的类。查看您的原始 jar 文件:其中的任何非类文件也应该复制到您的 classdir 中(在它们之前的相同相对目录中)。这最值得注意的包括META-INF/MANIFEST.MF
。然后我们从中创建一个新的 jar 文件。
jar
工具包含在 JDK 中。(您也可以简单地使用您信任的 zip 程序并将生成的 zip 文件重命名为 .jar。如果您的文件具有非 ASCII 名称,请确保将文件名编码设置为 UTF-8。)