java - .jar文件在反编译时有编译错误但运行正常

标签 java eclipse decompiler

我下载了一个可执行的 .jar 文件并使用了 Java Decompiler提取来源。我将它们导入到 Eclipse 中,它显示了一些编译错误,例如错误的类型或对不可见方法的调用。因此,我无法在不修复所有内容的情况下运行该项目。

.jar怎么可能在反编译器明明有逻辑错误的情况下还能正常运行呢?这是否与编译器级别较旧有关(我使用 1.8,而它最初是使用 1.6 或 1.7 编译的)?兼容性不是保持了吗?反编译器出错了吗?

最佳答案

How is it possible for the .jar file to function properly even though the decompiler clearly shows that there are logical errors?

.jar 文件中的编译类由字节码组成,而不是Java 源代码。没有从字节码到 Java 代码的单一转换。字节码可能格式正确,但不同的反编译器可能会产生不同的结果,而且结果并不总是有效的。

Did the decompiler make mistakes?

可能吧。它发生了。在编写了一个 Java 反编译器之后,我可以告诉你这一点都不简单。

关于java - .jar文件在反编译时有编译错误但运行正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365698/

相关文章:

java - __FIRST_PHASE__ 丢失 [jboss.naming.context.java.app.earth.env.EarthDS]"]}?

java - 如何获取 selenium 上所有打开的窗口和浏览器的处理程序?

java - Scala 生成的字节码到 Java 代码的转换

java - 如何从对象中查找类是否为单例类?

java - 在搜索和排序中使用泛型相对于数据类型特定方法有什么好处?

JavaEE web - 从/src/main/resources访问文件

c++ - 快速排序不适用于大型数组

java - Eclipse 中的平台特定代码

java - Fernflower 和 IntelliJ IDEA 的 java 反编译器

android - 使用对类成员的严格访问和模块化代码使得对 APK 进行逆向工程变得更加困难