gpt4 book ai didi

java - 从jar反编译并重新编译单个文件

转载 作者:行者123 更新时间:2023-12-03 20:26:08 30 4
gpt4 key购买 nike

在评论的帮助下,此问题已解决:

必须使用正确的目标版本重新编译Java。在我的情况下,javac -source 1.3 -target 1.3而不是简单地javac可以解决问题。

问题描述:

我有一个已编译的.jar java程序,其中需要修改单个url字符串。使用JD,我可以反编译代码并进行更改。

由于我希望不必重新编译整个项目,因此我认为我可以简单地将修改后的单个.java文件重新编译为.class,然后用它替换原始文件。

但是,在重新打包jar之后,程序确实启动了,但是使用我修改的代码的功能却表现不正常。

在日志中,我发现:

E EventDispatchThreadExceptionHandler:Unhandled exception occurred during event dispatching.::
java.util.MissingResourceException: Can't find bundle for base name com.myCompany.mySoftware.resources.ModuleResources, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:842)


ModuleResources.java是我修改的文件...

问题分析:


重新包装没有错:如果我提取并重新包装原始的jar,一切正常。
我的修改似乎同样不是问题所在:当我重新编译JD编译的java文件并使用生成的类文件进行重新打包时,会遇到相同的失败。


我反编译了重新打包的jar文件,并将其与原始jar文件的反编译进行了比较:在我修改过的文件中(至少),代码似乎是相同的,但JD显示了不同的行号。这可以暗示问题吗?

任何帮助将不胜感激。

非常感谢!

最佳答案

当我重新编译通过JD编译的Java文件并将生成的类文件用于重新打包时,我遇到了同样的错误


这似乎将矛头指向了JD。重新编译JD编译的Java文件时,是否可以将结果与原始的.class文件进行比较(例如,通过反汇编并比较结果)?如果它们的实质不同,那将使JD有过错的理论得到证实。如果他们不这样做,那么问题就出在其他地方。

关于java - 从jar反编译并重新编译单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9583370/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com