Ошибка декомпиляции восстановленных файлов .class - PullRequest
0 голосов
/ 14 мая 2018

Я хотел импортировать Java-программу, которую я написал в jgrasp, для затмения, и то, что я пытался сделать, не получилось, поэтому я решил удалить файл из 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 для файла класса «HangmanGame.class»

Если я открою файл класса в блокноте, я ясно вижу, что это не такt пусто, так почему я получаю эту ошибку для всех моих восстановленных программ.Можно ли как-нибудь преобразовать их обратно в файлы .java?Спасибо.

1 Ответ

0 голосов
/ 14 мая 2018

Восстановленные файлы классов повреждены.Первые четыре байта файла класса являются шестнадцатеричными: CA, FE, BA, BE = десятичные: 202, 254, 186, 190 = текст: Êþº¾.Если вы открываете с помощью бинарного редактора (вы можете использовать бинарный режим в jGRASP), это то, что вы должны увидеть в начале.Если вам повезет, восстановленные файлы просто имеют дополнительные байты в начале.Вы можете создать их резервную копию, открыть в бинарном редакторе, выполнить поиск «Êþº¾» и, если он найден, обрезать все перед этим.Если это так, в конце также могут быть дополнительные байты.Декомпиляторы могут или не могут справиться с этим.Вероятно, есть какой-то декомпилятор или средство просмотра файлов классов, которое может помочь, или вы можете изменить сканер файлов классов с открытым исходным кодом, чтобы найти правильную конечную точку.

...