Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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
在.class文件上使用Java反编译器(JD-GUI)会在src文件上出现多个错误,但在.jar中运行良好?它是如何工作的?_Java_Jar_Decompiler_Jd Gui - Fatal编程技术网

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

在.class文件上使用Java反编译器(JD-GUI)会在src文件上出现多个错误,但在.jar中运行良好?它是如何工作的?,java,jar,decompiler,jd-gui,Java,Jar,Decompiler,Jd Gui,我是Java新手,我正在努力理解一些东西。我设法为本地设备获取了一个.jar文件,以便与我的笔记本电脑进行通信。它工作的很好,但我想做一个升级,围绕代码和改变一些细节独家新闻。我在.jar文件上使用了Java反编译器,并设法查看了类文件。然而,每当我将它们反编译成源代码时,IDE中就会出现错误,我无法构建它们。到底发生了什么?如果它在.jar中工作正常,为什么会产生错误?编译是一个有损的过程,因此反编译总是一个“尽力而为”的过程。Java字节码的级别非常高,因此与其他语言相比,Java反编译相对

我是Java新手,我正在努力理解一些东西。我设法为本地设备获取了一个.jar文件,以便与我的笔记本电脑进行通信。它工作的很好,但我想做一个升级,围绕代码和改变一些细节独家新闻。我在.jar文件上使用了Java反编译器,并设法查看了类文件。然而,每当我将它们反编译成源代码时,IDE中就会出现错误,我无法构建它们。到底发生了什么?如果它在.jar中工作正常,为什么会产生错误?

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


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

完全同意锑。没有一个反编译器总是无错误地进行反编译。有时反编译很好,有时不好。
最好的方法是使用多个反编译器并相互使用,以减少反编译源中的错误。
如果您使用Eclipse,我建议
如果您使用IntelliJ,请尝试使用此反编译器。

请看下面的答案:看起来有些工具不支持Java语言的更高版本。也许这是你的问题?您使用的工具/版本是什么?