我是Java的新手,我正在尝试理解一些东西。我设法为本地设备获取了一个.jar文件,以便与我的笔记本电脑进行通信。它工作得很好,但我想做一个升级,绕过代码和改变一些细节。我在.jar文件上使用了Java Decompiler,并设法查看了类文件。然而,每当我将它们反编译成源代码时,我的IDE中就会出现错误,并且我无法构建它们。到底发生了什么?如果它在.jar中工作得很好,为什么会产生错误?
发布于 2019-09-20 10:13:31
编译是一个有损的过程,所以反编译始终是一项“最大的努力”。Java字节码的级别非常高,因此与其他语言相比,Java反编译相对容易,但它永远不会100%完成。因此,在重新编译反编译的源代码时,您不应该对看到错误感到惊讶。
如果您想直接使用字节码,我建议您使用Krakatau disassembler and assembler。反汇编程序不是反编译成Java源代码,而是将字节码转换成人类可读的汇编格式,这种格式是专门设计的,可以无损地在字节码之间进行转换。但是,它需要很好地理解低级Java字节码才能使用。
发布于 2019-11-19 22:58:20
完全同意锑的观点。没有一个反编译器总是可以毫无错误地进行反编译。有时它能很好地反编译,有时却不能。
最好的方法是拥有几个反编译器,并相互使用它们,以减少反编译源代码中的错误。
如果您使用Eclipse,我建议您使用https://marketplace.eclipse.org/content/enhanced-class-decompiler
如果您使用IntelliJ,请尝试这个反编译器Jar Explorer。
https://stackoverflow.com/questions/58020740
复制相似问题