ไฟล์ .java ของ Android Studio เสียหายหลังจากการปิดเครื่องอย่างไม่เหมาะสม

ฉันไฮเบอร์เนตแล็ปท็อปของฉันในขณะที่ 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 WTF   -  person Zyoo    schedule 29.07.2015
comment
สิ่งนี้เกิดขึ้นกับฉันบ่อยมาก โดยเฉพาะหลังจาก BSOD   -  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
มันบอกว่าเนื้อหาเหมือนกันและไม่แสดงอะไรเลย เหมือนกับใน Notepad สิ่งหนึ่งที่ฉันสังเกตเห็นคือที่ด้านล่างของ 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 นี่คือบิลด์ล่าสุดของคุณของแอพ/โปรเจ็กต์ของคุณซึ่ง ram บนโปรแกรมจำลองหรืออุปกรณ์ทางกายภาพ (ยืนยันโดยการตรวจสอบตำแหน่งของมัน ควรอยู่ในโฟลเดอร์โครงการของคุณ)

ขั้นตอนที่ 2 หลังจากค้นหา apk นี้สำเร็จแล้วให้เปลี่ยนชื่อเป็น zip และเปิดในซอฟต์แวร์ตัวเปิด zip หรือ rar

ขั้นตอนที่ 3 หลังจากแตกไฟล์แล้ว คุณจะพบ class.dex ในรูทของโฟลเดอร์ Extracted

ขั้นตอนที่ 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) เป็นไฟล์ 1K ชื่อ 'classes-dex2jar.jar' ซึ่งปรากฏในโฟลเดอร์เดียวกันกับไฟล์ 'classes-dex' ดั้งเดิม 9231K การเปิด 1K class-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 app store ทำให้ได้ไฟล์ .class หลายไฟล์ แต่ไฟล์เหล่านั้นอยู่ใน bytecode เช่น 'b·!(±#¶&¼*´»' ข้อเสนอแนะใด ๆ ในการเข้าถึงซอร์สโค้ดที่อ่านได้หายไปตอนนี้และมาไกลขนาดนี้ ฉันคิดว่านั่นคือประเด็น - person Androidcoder; 02.09.2016
comment
คุณใช้ตัวถอดรหัส jd-gui หรือไม่? หรือลองติดตั้ง apk ล่าสุดที่คุณมีลงในโทรศัพท์/โปรแกรมจำลองและติดตั้งตัวถอดรหัสจาก playstore ที่ไม่ต้องใช้ความเชี่ยวชาญใดๆ ฉันลอง 'แสดง Java' มันทำงานได้ดี - person Lakhwinder Singh Dhillon; 02.09.2016

ขั้นตอนง่ายๆ ที่ช่วยฉันแก้ปัญหานี้มาตลอด

ลบโฟลเดอร์แคชของเส้นทาง

 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 studio ย้ายโปรเจ็กต์ไปยังโฟลเดอร์อื่นจากโฟลเดอร์ปัจจุบันและเปิดแอปอีกครั้งจากโฟลเดอร์นั้นทำเคล็ดลับสำหรับฉัน

person viveksuggu    schedule 02.03.2019
comment
ใครจะคิดว่าสิ่งนี้จะได้ผลจริงๆ - person Isaac Martin Otim; 11.04.2021

ฉันไม่แน่ใจว่าอะไรทำให้มันเกิดขึ้นและ android studio นั้นเป็น IDE ที่แย่ที่สุดที่ฉันเคยร่วมงานด้วย (เครื่องมือจะกล้าแก้ไขและบันทึกไฟล์ผู้ใช้โดยไม่ต้องถามได้อย่างไร ทีมใช้งานของ google สมควรได้รับรางวัลโนเบล)

แต่นี่คือสิ่งที่ฉันทำเพื่อจัดการแก้ไข...

ทันทีที่คุณระบุเหตุการณ์เช่นนี้เกิดขึ้น ปิด android studio ให้หยุดการสร้างที่กำลังดำเนินการอยู่ และอย่าพยายามเรียกใช้โปรเจ็กต์...
ดูเหมือนว่าบางครั้งการแก้ไขจะไม่เสร็จสิ้นในไฟล์ต้นฉบับจริง แต่เป็น android studio กำลังเปิดไฟล์ระดับกลางบางไฟล์แทนที่จะเป็นแหล่งที่มาดั้งเดิม และแสดงให้คุณเห็นเมื่อคุณเปิดแหล่งที่มา... ลิงก์สัญลักษณ์บางอย่างยุ่งเหยิง

ดังนั้นเมื่อปิด android studio ให้เปิด file explorer ไปที่พื้นที่ทำงานของคุณและสร้างสำเนาของโครงการของคุณในไดเร็กทอรีอื่น (เท่าที่เป็นไปได้ของ android studio)

เปิดไฟล์ souc ของคุณด้วยโปรแกรมแก้ไขข้อความและตรวจสอบว่าไฟล์เหล่านั้นยังโอเคอยู่หรือไม่...

เปิด android studio อีกครั้งแล้วคัดลอก/วางไฟล์ทีละไฟล์ เนื้อหาของโปรเจ็กต์คัดลอกที่คุณสร้างกับโปรเจ็กต์อย่างเป็นทางการ

มันน่าเบื่อสุด ๆ และอาจต้องใช้เวลาสักพักในการลดขนาดโปรเจ็กต์ของคุณ แต่ฉันสามารถกู้คืนไฟล์ได้มากกว่า 90% แบบนี้

person Rafael Lima    schedule 31.05.2019

ขั้นแรก: เสมอ ใช้การควบคุมแหล่งที่มา Git และ DVCS ที่คล้ายกันไม่จำเป็นต้องใช้เซิร์ฟเวอร์และสามารถสร้างพื้นที่เก็บข้อมูลสำหรับคุณในเครื่องได้

สำหรับการกู้คืนไฟล์ของคุณ ไม่ว่าจะใช้งานได้จริงหรือไม่ ก็ต้องขึ้นอยู่กับว่าบล็อกดิสก์ที่ระบบไฟล์ชี้ไปนั้นถูกต้องหรือไม่ ข้อเท็จจริงที่คุณเห็น \0 แสดงว่าคุณกำลังใช้ SSD และบันทึกของระบบไฟล์มีขนาดที่ถูกต้องแต่บล็อกผิด ซึ่งหมายความว่าไม่น่าจะกู้คืนได้ คุณควรเปิดไฟล์ด้วยโปรแกรมแก้ไข hex และดูว่าเนื้อหาใดๆ ที่เกิน 2-3 ไบต์เริ่มต้นสามารถอ่านได้หรือไม่ ถ้าไม่อย่างนั้น ตัวไฟล์เองแทบจะไม่สามารถกู้คืนได้อย่างแน่นอน

อย่างไรก็ตาม IntelliJ มีคุณลักษณะประวัติศาสตร์ท้องถิ่นที่อาจมีสำเนาเก่าของ ไฟล์.

person chrylis -cautiouslyoptimistic-    schedule 07.04.2015
comment
มันไม่ได้แสดงอะไรเลยที่นั่นด้วย แต่มันบอกว่าเนื้อหาเหมือนกัน - person cout_display_name; 07.04.2015

ลองในสตูดิโอ Android

ทำให้ใช้ไม่ได้และแคช/รีสตาร์ท ....

person madhu527    schedule 14.08.2018