如何在编译的jar中更改double?

时间:2015-02-17 18:09:41

标签: java bytecode-manipulation

我有一个jar,其中包含一行代码,用于比较两个双精度值,其中一个值为0.7,但我需要将其更改为0.0

我无法使用反射或类似的东西,因为这是一个已编译的jar文件(不是开源),但更改此值至关重要,因为如果它保持在0.7则存在巨大的滞后问题

我在考虑编辑字节码,但找不到任何好的软件。

我很感激任何帮助。

3 个答案:

答案 0 :(得分:1)

如果您可以反编译该类,则可以进行更改并重新编译它。然后用你的补丁类汇总jar文件。这取决于类和用于编译它的JDK,这将是多么容易。

参考文献:JAD(Wiki链接,因为JAD基本上是一个死的项目,虽然它在我需要的时候继续工作。)如果你使用Eclipse,你可能会对JD-Eclipse好运。还有Procyon项目,我的成功有限。

答案 1 :(得分:1)

了解如何反编译程序Java类,然后自己重​​新编译软件。

How do I "decompile" Java class files?

从另一个类似的问题:(Change string constant in a compiled class

如果您有此课程的来源,那么我的方法是:

  • 获取JAR文件
  • 获取单一类的来源
  • 使用类路径上的JAR编译源代码(这样,您不必编译任何其他内容; JAR已经包含二进制文件并不会造成损害)。您可以使用最新的Java版本;只需使用-source-target降级编译器。
  • 使用jar u或Ant任务
  • 将JAR中的类文件替换为新文件

答案 2 :(得分:0)

除了使用(Hex)编辑器或反编译器之外,使用可以使用像asm这样的字节码操作库。实际上,您甚至可以动态地使用预加载代理transform the code