gpt4 book ai didi

java - 为什么我的反编译 jar 出现这么多错误?

转载 作者:行者123 更新时间:2023-12-01 16:21:53 25 4
gpt4 key购买 nike

我使用 JD-GUI 反编译了一个 jar(这是一个用旧 Java 版本编写的相当复杂的应用程序),并将 java 文件与所有必需的外部库(jar)一起放入 Eclipse 中。问题是我收到很多关于不适用于特定类型的方法的错误、关于 access$0 的错误以及许多其他问题。

为什么会发生这种情况?是否无法反编译复杂的jar并在Eclipse中打开项目?

我收到错误,指出所使用的方法不适用于某些类型,方法 access$0(...) 对于该类型未定义...

最佳答案

Why is this happening?

发生这种情况是因为反编译器无法找出将编译为等效字节码的 Java 源代码。

反编译器的任务很困难。当编译器将 Java 源代码编译为字节码时,大量信息被丢弃。它不仅仅是注释、缩进和局部变量名称等显而易见的东西。这也是对控制结构做出的特定选择。此外,在多种情况下,编译器必须插入合成方法或字段

反编译器必须做两件有时相互矛盾的事情:

  • 它必须生成可读代码。
  • 它必须生成(希望)可编译的代码,并且(希望)与字节码含义相同。

不幸的是,反编译器并不总是正确的。实际的反编译是启发式的,而启发式并不完美。

混淆器让事情变得更加困难。故意的。

<小时/>

推论是您不应该在软件开发过程中使用反编译和重新编译。

最好的方法是获取您想要理解和修改的 JAR 的原始源代码。

只有在别无选择的情况下才使用反编译来帮助您理解其他人的代码。 (首先,这很可能是许可证违规。检查软件许可证是否禁止逆向工程等。)

如果您确实需要修改字节码,请使用字节码反汇编程序...并学习阅读和编辑 Java 汇编语言。

关于java - 为什么我的反编译 jar 出现这么多错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62249474/

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