Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改已编译jar中的double?_Java_Bytecode Manipulation - Fatal编程技术网

Java 如何更改已编译jar中的double?

Java 如何更改已编译jar中的double?,java,bytecode-manipulation,Java,Bytecode Manipulation,我有一个jar,其中包含一行代码,比较两个双精度,一个值为0.7,但我需要能够将其更改为0.0 我不能使用反射或类似的东西,因为这是一个编译过的jar文件(不是开源的),但是更改这个值是至关重要的,因为如果它保持在0.7上,就会有一个巨大的滞后问题 我想编辑字节码,但找不到任何好的软件 非常感谢您的帮助。如果您可以反编译该类,您可以进行更改并重新编译它。然后将JAR文件与您的修补类一起卷起。这取决于类和用来编译它的JDK,这将有多容易 参考文献:(Wiki链接,因为JAD基本上是一个死气沉沉的项

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

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

我想编辑字节码,但找不到任何好的软件


非常感谢您的帮助。

如果您可以反编译该类,您可以进行更改并重新编译它。然后将JAR文件与您的修补类一起卷起。这取决于类和用来编译它的JDK,这将有多容易


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

研究如何反编译程序Java类,然后自己重新编译软件

来自另一个类似问题:()

如果你有这门课的资料来源,那么我的方法是:

  • 获取JAR文件
  • 获取单个类的源代码
  • 使用类路径上的JAR编译源代码(这样,您就不必编译任何其他内容;JAR已经包含二进制文件也不会有什么坏处)。您可以为此使用最新的Java版本;只需使用
    -source
    -target
    将编译器降级即可
  • 使用
    jaru
    或Ant任务将JAR中的类文件替换为新的类文件

除了使用(十六进制)编辑器或反编译器,use还可以使用类似的字节码操作库。实际上,您甚至可以使用预加载代理来动态加载

如果jar不是开源的,那么你应该要求制造商并支付费用,然后根据你的规格进行更改。@JorgeCampos,这是不可能的,因为制造商已经死了。你确定没有人在做这个项目了吗?如果是这样的话,你应该搜索一个替换项。@Clashsoft没有替换项,如果有,那么没有人会继续这样做。很抱歉响应太晚,但这正是我所需要的,我不敢相信我从未想过反编译我需要的单个类,然后在类路径中使用编译过的jar,然后编译类,然后将其放回编译过的jar中,简单地说是genious:)