首页 > 解决方案 > 反编译恢复的 .class 文件时出错

问题描述

我想将我在 jgrasp 中编写的 java 程序导入到 eclipse 中,但我尝试做的事情没有成功,所以我决定从 eclipse 中删除该文件,以为我仍然会将它放在从中导入文件的文件夹中。但是,我很快发现这只是一起删除了我的程序。我使用 EaseUs 数据恢复来恢复我删除的文件,但它只能恢复 .class 文件。我阅读了如何将 .class 文件反编译回 .java 文件,并决定访问一个名为 javadecompilers.com 的站点。我在我拥有的其他项目上对其进行了测试,并且效果很好。我附加了 .class 文件并将其反编译回 .java 文件。但是,当我尝试附加已恢复的类文件时,它不起作用,并且出现此错误:

无法加载指定的类:org.benf.cfr.reader.util.CannotLoadClassException: HangmanGame.class - org.benf.cfr.reader.util.ConfusedCFRException: Magic != Cafebabe for class file 'HangmanGame.class'

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

标签: javaeclipseclassdecompiler

解决方案


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


推荐阅读