【问题标题】:Error decompiling recovered .class files反编译恢复的 .class 文件时出错
【发布时间】:2018-05-13 22:41:10
【问题描述】:

我想将我在 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 文件?谢谢。

【问题讨论】:

  • 有可用的反编译器,包括免费的和商业的,而且通常更好的是更昂贵的,但它们并不完美,它们当然不会给你可读的变量,但它可以'尝试其中一种免费的不会有什么坏处。如果它不起作用,那么最好的办法就是重新编写代码。

标签: java eclipse class decompiler


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2013-09-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2015-01-05
    相关资源
    最近更新 更多