Java 反编译后重新编译到*.Jar并修复代码?

Java 反编译后重新编译到*.Jar并修复代码?,java,jar,javac,Java,Jar,Javac,我有一个myfile.jar文件。 我使用JDGUI反编译myfile.jar文件夹中的所有*.class。我在许多文件夹中获得许多*.java文件 在修复了一些*.java中的一些代码之后,现在我想将所有*.java重新编译回*.class,并将整个文件夹打包回myfile.jar 我该怎么做 (这是我第一次玩java代码。)一般来说,要将java代码编译成类,需要JDK附带的javac可执行文件 Unix: 窗口: %JAVA_HOME%\bin\javac.exe -d OUTPUT_DI

我有一个myfile.jar文件。 我使用JDGUI反编译myfile.jar文件夹中的所有*.class。我在许多文件夹中获得许多*.java文件

在修复了一些*.java中的一些代码之后,现在我想将所有*.java重新编译回*.class,并将整个文件夹打包回myfile.jar

我该怎么做


(这是我第一次玩java代码。)

一般来说,要将java代码编译成类,需要JDK附带的
javac
可执行文件

Unix:

窗口:

%JAVA_HOME%\bin\javac.exe -d OUTPUT_DIRECTORY SOURCE_FILES
编译完代码后,就可以创建jar(它是一个zip文件,包含所有类和一些关于创建者、版本等的元数据)


您可以阅读有关可与和一起使用的不同选项的更多信息。使用ant这样的工具,可以更容易地编译源代码和创建JAR。请参阅和任务。

您需要一个Java开发工具包(JDK)。这包括一个Java编译器(通常命名为
javac
)和一个jar归档程序

假设java文件位于目录names
src
(然后根据它们的包结构)中,您将使用

javac-d classdir-sourcepath src src/*.java src/*.java src/*.java src/*/*.java。。。
编译所有文件。(将*的数量调整为目录级别的数量。如果您只有一些包含源文件的文件夹,您也可以单独列出它们。如果某些类依赖于其他类,您可以将其他类合并,编译器将自动查找并编译它们。)

如果程序需要外部库,请为这些库提供一个
-classpath
参数

现在我们在目录
classdir
中有了所有已编译的类。查看您的原始jar文件:其中的任何非类文件也应该复制到您的classdir中(与以前的相对目录相同)。其中最显著的包括
META-INF/MANIFEST.MF

然后我们根据这些创建一个新的jar文件。JDK中包含了
jar
工具

jar cfm mypackage.jar classdir/META-INF/MANIFEST.MF -C classdir .

(您也可以简单地使用您信任的zip程序,并将生成的zip文件重命名为.jar。如果您的文件具有非ASCII名称,请确保将文件名编码设置为UTF-8。)

谢谢,我可以使用什么javac命令将多个*.java编译为*.class包括子文件夹中的一个?@sandy:使用shell通配符,就像在我的回答中一样。另外,确保在你居住的地方做这样的事情是合法的(分别按照你得到jar文件时同意的许可证)。非常感谢你的帮助,这只是一个免费的应用程序,我试图修复一些错误。为什么你们要投否决票。疯狂
${JAVA_HOME}/bin/jar cf output.jar INPUT_FILES
jar cfm mypackage.jar classdir/META-INF/MANIFEST.MF -C classdir .