繁体   English   中英

在 a.class 文件上使用 Java 反编译器 (JD-GUI) 在 src 文件上出现多个错误,但它在 a.jar 中运行良好? 它是如何工作的?

[英]Using Java Decompiler (JD-GUI) on a .class file gives me multiple errors on src file, but it runs fine within a .jar? How does it work?

我是 Java 的新手,我试图理解一些事情。 我设法获得了一个.jar 文件,以便本地设备与我的笔记本电脑进行通信。 它工作得很好,但我想做一个升级并挖掘代码并更改一些细节。 我在 .jar 文件上使用了 Java 反编译器,并设法查看了 class 文件。 但是,每当我将它们反编译为源代码时,我的 IDE 中就会出现错误,并且我无法构建它们。 究竟发生了什么? 如果它在.jar 中工作正常,为什么会产生错误?

编译是一个有损过程,因此反编译始终是“尽力而为”的努力。 Java 字节码级别异常高,因此 Java 反编译相对于其他语言来说相对容易,但它仍然永远不会 100% 完成。 因此,在重新编译反编译的源代码时,您应该不会对看到错误感到惊讶。

如果您想直接使用字节码,我建议您使用Krakatau disassembler 和 assembler 反汇编程序不是反编译为 Java 源代码,而是将字节码转换为人类可读的汇编格式,该格式专门设计用于无损转换为字节码和从字节码转换。 但是,它需要很好地理解低级 Java 字节码才能使用。

完全同意锑。 没有反编译器总是可以反编译而没有任何错误。 有时它可以很好地反编译,有时则不行。
最好的方法是拥有几个反编译器并相互使用它们以减少反编译源中的错误。
如果您使用 Eclipse 我会建议https://marketplace.eclipse.org/content/enhanced-class-decompiler
如果你使用 IntelliJ,试试这个反编译器Jar Explorer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM