Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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
Java 反编译恢复的.class文件时出错_Java_Eclipse_Class_Decompiler - Fatal编程技术网

Java 反编译恢复的.class文件时出错

Java 反编译恢复的.class文件时出错,java,eclipse,class,decompiler,Java,Eclipse,Class,Decompiler,我想将一个用jgrasp编写的java程序导入eclipse,但我的尝试没有成功,因此我决定从eclipse中删除该文件,因为我认为该文件仍将保存在从中导入该文件的文件夹中。然而,我很快发现这只是删除了我的程序一起。我使用EaseUs data recovery来恢复我删除的文件,但它只能恢复.class文件。我阅读了如何将.class文件反编译回.java文件,并决定去一个名为javadecompilers.com的网站。我在其他项目上进行了测试,效果非常好。我附加了.class文件,它将其反

我想将一个用jgrasp编写的java程序导入eclipse,但我的尝试没有成功,因此我决定从eclipse中删除该文件,因为我认为该文件仍将保存在从中导入该文件的文件夹中。然而,我很快发现这只是删除了我的程序一起。我使用EaseUs data recovery来恢复我删除的文件,但它只能恢复.class文件。我阅读了如何将.class文件反编译回.java文件,并决定去一个名为javadecompilers.com的网站。我在其他项目上进行了测试,效果非常好。我附加了.class文件,它将其反编译回.java文件。但是,当我尝试附加我恢复的类文件时,它不起作用,我得到以下错误:

无法加载指定的类: org.benf.cfr.reader.util.CannotLoadClassException:HangmanGame.class-org.benf.cfr.reader.util.confusedcfrexException:Magic!=类文件“HangmanGame.class”的Cafebabe


如果我在记事本中打开类文件,我可以清楚地看到它不是空的,那么为什么我的所有恢复程序都会出现此错误。有没有办法将它们转换回.java文件?谢谢。

恢复的类文件已损坏。类文件的前四个字节是十六进制:CA、FE、BA、BE=十进制:202、254、186、190=文本:Êþ¾。如果您使用二进制编辑器打开(您可以在jGRASP中使用二进制模式),这就是您应该在开始时看到的。如果幸运的话,恢复的文件只是在开始时有额外的字节。你可以备份它们,在二进制编辑器中打开,搜索“Êþþþ¾”,如果找到,就把前面的所有内容都删掉。如果是这种情况,那么末尾可能还有额外的字节。反编译器可能会也可能不会处理这个问题。可能有一些反编译器或类文件查看器可以提供帮助,或者您可以修改开源类文件扫描程序以找到正确的端点。

有免费和商用的反编译器,通常更好的是更昂贵的反编译器,但它们并不完美,它们当然不会提供可读的变量,但是试试免费的也没什么坏处。如果它不起作用,那么您最好的办法可能是重新编写代码。