我有一个myfile.jar文件。 我用jd-gui反编译myfile.jar文件夹中的所有* .class。我在许多文件夹中获得了许多* .java文件
在某些* .java中修复了一些代码后,现在我想将所有* .java重新编译回* .class,并将整个文件夹打包回myfile.jar。
我该怎么做?
(这是我第一次玩java代码。)
答案 0 :(得分:10)
您需要一个Java Development Kit(JDK)。这包括Java编译器(通常名为javac
)和jar存档器。
假设你有一个目录名src
中的java文件(然后根据它们的包结构),你会使用
javac -d classdir -sourcepath src src/*.java src/*/*.java src/*/*/*.java ...
编译所有文件。 (将*的数量调整为目录级别的数量。如果你只有一些包含源文件的文件夹,你也可以单独列出它们。如果某些类依赖于其他类,你可以省略其他类,编译器会找到并且自动编译它们。)
如果程序需要外部库,请为它们提供-classpath
参数。
现在我们在目录classdir
中编译了所有已编译的类。查看原始jar文件:其中的任何非类文件也应该复制到您的classdir中(在之前的相同目录中)。最值得注意的是META-INF/MANIFEST.MF
。
然后我们从这些创建一个新的jar文件。 jar
工具包含在JDK中。
jar cfm mypackage.jar classdir/META-INF/MANIFEST.MF -C classdir .
(您也可以使用自信的zip程序并将生成的zip文件重命名为.jar。如果您的文件具有非ASCII名称,请确保将文件名编码设置为UTF-8。)
答案 1 :(得分:2)
通常,要将Java代码编译为类,您需要JDK附带的javac
可执行文件。
Unix的:
${JAVA_HOME}/bin/javac -d OUTPUT_DIRECTORY SOURCE_FILES
视窗:
%JAVA_HOME%\bin\javac.exe -d OUTPUT_DIRECTORY SOURCE_FILES
编译完代码后,您可以创建jar(这是一个zip文件,其中包含所有类和一些有关创建者,版本等的元数据)。
${JAVA_HOME}/bin/jar cf output.jar INPUT_FILES
您可以阅读有关javac和jar可以使用的不同选项的更多信息。使用像ant这样的工具可以更容易地编译源代码和创建jar。请参阅javac和jar任务。