Android Studio Поврежден файл .java после неправильного завершения работы

Я перевел свой ноутбук в спящий режим, когда работала Android Studio, и позже обнаружил, что ноутбук был выключен. Теперь один из моих исходных файлов отображается пустым в Android Studio и в Wordpad. Когда я открываю его в Notepad++, он показывает символ NUL. Файл имеет тот же размер, что и раньше, что означает, что содержимое файла не потеряно (надеюсь).

Как восстановить фактическое содержимое этого файла? Мне это нужно, так как у меня не было резервной копии этого файла.


person cout_display_name    schedule 07.04.2015    source источник
comment
Я никогда не слышал, чтобы это происходило раньше! У вас есть хотя бы файл .class?   -  person javajavajava    schedule 07.04.2015
comment
Я не могу найти файл .class   -  person cout_display_name    schedule 07.04.2015
comment
На самом деле это случилось со мной ДВАЖДЫ. Один сбой из Sublime Text, один из Android Studio. ВТФ   -  person Zyoo    schedule 29.07.2015
comment
это случалось со мной очень часто. особенно после БСОД   -  person A. N    schedule 08.04.2016
comment
См. мой ответ здесь, это может помочь вам поврежден"> stackoverflow.com/questions/41175409/   -  person resw67    schedule 14.01.2017


Ответы (9)


Посмотрите, сохранила ли Android Studio версию в локальной истории.

Перейдите к своему java-файлу в Android Studio и перейдите к

VCS -> Local History -> See History

Кроме того, начните использовать систему контроля версий, например git.

person Eric S.    schedule 07.04.2015
comment
Или, возможно, проще, щелкните файл правой кнопкой мыши и перейдите к локальной истории. - person stevebot; 07.04.2015
comment
он говорит, что содержимое идентично и ничего не показывает, как в Блокноте. Одна вещь, которую я заметил, находится в нижней части Android Studio в разделителе строк, где обычно написано CRLF, для этого файла отображается n/a. - person cout_display_name; 07.04.2015
comment
Это сэкономило мне два дня работы... но теперь все операции импорта завершились неудачно. - person seema; 23.09.2015
comment
Я допустил ошибку, используя опцию Invalidate Caches/Restart перед этим, и это смыло всю мою локальную историю :( Будьте осторожны - person Rehan; 12.11.2015
comment
спасатель жизни. мой java-файл внезапно стал xml-файлом после сбоя эмулятора + Mac и автоматической перезагрузки (интересно, почему). - person neobie; 05.11.2016

Это то, что всегда работает

Шаг 1. Найдите на своем компьютере *.apk, он покажет расположение многих apk, но найдите app-debug.apk, это ваша последняя сборка вашего приложения/проекта, которая работает на эмуляторе или физическом устройстве (подтвердите это, проверив его местоположение. он должен быть в папке вашего проекта)

Шаг 2. После успешного поиска этого apk переименуйте его в zip и откройте в любой программе для открытия zip или rar.

Шаг 3. После извлечения вы найдете class.dex в корне папки «Извлечено».

Шаг 4. Загрузите последнюю версию dex2jar.

Шаг 5. Перетащите файл class.dex в файл de2jar.bat в папке dex2jar. Это позволит извлечь банку из него.

Шаг 6. Теперь откройте этот jar-файл в jd-gui (Скачать здесь), и вуаля, вы увидите все классы, которые вы когда-либо посещали в своем последнем рабочий проект.

Это всего лишь небольшой ответный подарок за всю помощь, которую я получил из ответов от сообщества stackoverflow.

Рад помочь :)

person Lakhwinder Singh Dhillon    schedule 07.09.2015
comment
Ваше решение спасло меня. Большое спасибо :* - person Alireza; 06.10.2015
comment
Отлично! Спасибо, это спасло меня, местная история была пуста! - person Firas Abd Alrahman; 24.10.2015
comment
Спасибо!! отличное решение - person payal tuteja; 19.12.2015
comment
Извлеченный файл (шаг 5) представлял собой файл размером 1 КБ с именем «classes-dex2jar.jar», который находился в той же папке, что и исходный файл 9231 КБ «classes-dex». Открытие 1K классов-dex2jar.jar с помощью jd-gui ничего не дало (как и ожидалось для файла 1K). У меня de2jar.bat не работает, есть другие варианты? Должен ли файл jar называться «classes-dex2jar.jar»? - person Androidcoder; 02.09.2016
comment
да, сгенерированный файл называется «classes-dex2jar.jar». Попробуйте повторить шаги еще раз. или попробуйте сбросить class.dex в dex2jar.bat вместо d2j-dex2jar.bat в той же папке (хотя это устарело, но все еще может работать) - person Lakhwinder Singh Dhillon; 02.09.2016
comment
Сегодня утром мне удалось получить файл class-dex2jar.jar 9527K. Мой ноутбук называет это файлом типа «9 Zip». Когда я помещаю это в декодер Java, я вижу новую вкладку с надписью «classes-dex2jar.jar», иначе она пуста. Я больше ничего не вижу в окне, например, имен файлов классов. Есть ли что-то еще сделать? Открытие class-dex2jar.jar в «9 zip», который я скачал из магазина приложений Windows, дало несколько файлов .class, но они имеют байт-код, например «b·!(±#¶&¼*´»’. Любые предложения достигнув потерянного читаемого исходного кода теперь, когда я зашел так далеко, я подумал, что в этом и смысл. - person Androidcoder; 02.09.2016
comment
Вы используете декомпилятор jd-gui? или просто попробуйте установить последний apk, который у вас есть, на какой-нибудь телефон/эмулятор и установите декомпилятор из playstore. Это не требует никакой экспертизы. Я попробовал «Показать Java». это сработало хорошо. - person Lakhwinder Singh Dhillon; 02.09.2016

Простые шаги, которые всегда помогали мне решить эту проблему

Удалить папку caches пути

 C:\Users\user\.AndroidStudio3.6\system\caches.

Удаление вышеуказанной папки только иногда не будет работать, поэтому необходимо также удалить папку кешей конкретного проекта.

F:\AndroidStudioProjects\sampleApplication\.idea\caches
person Nabin    schedule 12.05.2020
comment
Да, эта проблема возникает из-за неправильного завершения работы, с которой я сталкивался много раз, и она решается с помощью этих шагов. благодарю вас. - person Amrish Kakadiya; 26.08.2020

Android Studio имеет встроенную историю файлов, которую я бы проверил в первую очередь. Вероятно, вы найдете там свой код. Вы можете найти его, если щелкнете правой кнопкой мыши по файлу.

Если есть только специальный символ (этот nul), удалите его с помощью notepad++ и проверьте, устраняет ли это вашу проблему.

person rekire    schedule 07.04.2015

Простейшая душа!

  1. Откройте этот веб-сайт - http://www.javadecompilers.com
  2. Загрузите APK-файл вашего проекта (app-debug.apk)
  3. И вот, вы можете посмотреть и скачать весь проект.

Примечание. Если вам нужны ваши java-файлы, вы можете найти их в папке «com» ​​родительской папки декомпилированной (загруженной) папки.

person mayur saini    schedule 09.12.2016

Закройте студию Android, переместите проект в другую папку из текущей папки и снова откройте приложение из этой папки.

person viveksuggu    schedule 02.03.2019
comment
кто бы мог подумать, что это действительно сработает - person Isaac Martin Otim; 11.04.2021

Я не уверен, что заставляет это происходить, и Android Studio - далеко не худшая IDE, с которой я работал (как инструмент может осмелиться редактировать и сохранять пользовательские файлы, даже не спрашивая? команда юзабилити Google заслуживает нобелевской премии)

Но это то, что я делаю, чтобы решить эту проблему...

Как только вы обнаружите, что подобное событие произошло, закройте студию Android, остановите все текущие сборки и не пытайтесь запускать проект...
Похоже, что иногда изменения выполняются не в реальном исходном файле, а в Android. студия открывает какие-то промежуточные файлы вместо оригинальных исходников и показывает их вам, когда вы открываете исходники... какой-то беспорядок с символическими ссылками

Итак, когда студия Android закрыта, откройте проводник файлов, перейдите в свою рабочую область и создайте копию своего проекта в другом каталоге (насколько это возможно в студии Android)

откройте исходные файлы в любом текстовом редакторе и проверьте, все ли с ними в порядке...

повторно откройте студию Android и скопируйте / вставьте файл за файлом, содержимое проекта копирования, которое вы сделали, в официальный проект

Это очень скучно и может занять некоторое время в зависимости от размера вашего проекта, но мне удалось восстановить более 90% моих файлов, подобных этому.

person Rafael Lima    schedule 31.05.2019

Во-первых: всегда используйте систему управления версиями. Git и аналогичные DVCS не требуют сервера и могут создать для вас репозиторий локально.

Что касается восстановления вашего файла, практичность будет зависеть от того, правильны ли блоки диска, на которые указывает файловая система; тот факт, что вы видите \0, предполагает, что вы используете SSD и что записи файловой системы имеют правильный размер, но неправильный блок (блоки), а это означает, что восстановление маловероятно. Вы должны открыть файл с помощью шестнадцатеричного редактора и посмотреть, читаемо ли какое-либо содержимое после первых нескольких байтов. Если нет, то сам файл почти наверняка не подлежит восстановлению.

Однако IntelliJ включает локальную историю, которая может иметь более старую копию файл.

person chrylis -cautiouslyoptimistic-    schedule 07.04.2015
comment
Там тоже ничего не показывает. Но он говорит, что содержимое идентично - person cout_display_name; 07.04.2015

Попробуйте в студии Android

Сделать недействительным и кэшировать/перезапустить....

person madhu527    schedule 14.08.2018