我需要修补一些旧版本的Java软件。问题是在旧版本中重建整个包将非常困难,因为它是一个非常复杂的程序。
我有更正的源文件。有没有办法将这一个文件编译成一个类文件,然后将其插入到jar中,或者我是否必须拥有每个源文件?
更新 - 如何进行Java修补程序
使用Elliott Frisch的回答我能够制作补丁。这是命令行:
javac -target 1.5 -source 1.5 -cp original.jar;otherlib.jar CorrectedSource.java
所以,总结一下。您指定Java的目标版本并将源设置为匹配,包括原始jar(和任何lib)作为类路径,然后最终命名要编译的源代码。然后,您可以获取生成的类文件并将其插入jar中,替换旧的类文件。
答案 0 :(得分:3)
如果只重新编译那个文件
,它应该可以工作-target <release>
,每javac -help
为特定的VM版本生成类文件,我相信您需要匹配原始版本。答案 1 :(得分:1)
target <release>
编译源文件,以确保它与编译旧jar的版本相同。filename.jar
重命名为filename.zip
.zip
档案.class
文件替换为新文件META-INF
目录。filename.jar
。注意:校验和会有所不同。一些可执行的jar检查这个,其他的则不检查。 YMMV