Android Studio ระบุว่า“ ไม่สามารถแก้ไขสัญลักษณ์ได้” แต่โปรเจ็กต์คอมไพล์


97

ฉันนำเข้า twitter4j ใน AndroidStudio โดยใช้สิ่งต่อไปนี้ใน build.gradle ของฉัน:

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
  compile files('libs/twitter4j-core-3.0.4.jar')
}

โครงการรวบรวมได้ดีและฉันสามารถสร้างวัตถุ twitter ได้โดยไม่มีปัญหา อย่างไรก็ตามใน Android Studio สิ่งใดก็ตามที่อ้างถึงไลบรารีนั้นจะแสดง "ไม่สามารถแก้ไขสัญลักษณ์" และแสดงเป็นสีแดง ฉันต้องทำอย่างไรเพื่อให้ Android Studio จดจำไลบรารีได้

ฉันได้ลองสร้างโปรเจ็กต์ใหม่แล้ว, ./gradlew clean และปิดและเปิดโปรเจ็กต์อีกครั้ง



ปี 2018, Android Studio 3+: บางครั้ง Android Studio และ Gradle ไม่เห็นด้วย วิธีแก้ไขที่นี่: stackoverflow.com/questions/50313885/…
user1506104

ฉันมีปัญหาเดียวกันหลังจากนำเข้าโครงการแบบฝึกหัดไปยัง Android Studio เมื่อนำเข้า Android Studio ให้คำเตือนและแนะนำให้อัปเดตเวอร์ชัน sdk ดังนั้นฉันจึงทำตามคำแนะนำ หลังจากนั้นมีบางอย่างเข้ากันไม่ได้อีกต่อไปดังนั้น Android Studio จึงแนะนำให้เปลี่ยนเวอร์ชันอื่นเป็นอย่างอื่น หลังจากทำตามคำแนะนำทั้งหมดนี้ฉันมีปัญหา "ไม่พบสัญลักษณ์" เหมือนกัน ฉันย้อนกลับการเปลี่ยนแปลงนำเข้าโครงการอีกครั้งและไม่ได้ทำตามคำแนะนำของ Android Studio ในครั้งนี้ หลังจากนั้นข้อผิดพลาดก็หายไป ระมัดระวังโดยทำตามคำแนะนำของโปรแกรมนั้นโดยสุ่มสี่สุ่มห้า
เดวิด

คำตอบ:


237

ไม่รู้ว่าจะได้ผลหรือไม่ แต่ความคิดเดียวของฉันจนถึงตอนนี้: คลิกขวาที่ไฟล์ jar ในแผนผังไฟล์ภายใน AS แล้วเลือก "เพิ่มเป็นไลบรารี ... "

แก้ไข: คุณสามารถทำ "File" -> "Invalidate Caches ... " และเลือกตัวเลือก "Invalidate and Restart" เพื่อแก้ไขปัญหานี้

แก้ไข 2: การแก้ไขนี้ควรใช้ได้กับเหตุการณ์ที่คล้ายกันทั้งหมดและไม่ใช่ความละเอียดเฉพาะของ twitter4j


ฉันไม่ได้รับสิ่งนั้นเป็นตัวเลือกเมื่อฉันคลิกขวาที่โถ ฉันวิ่ง 0.2.13
TG-T

นี่อาจหมายความว่าคุณได้ทำสิ่งนี้แล้ว ลองใช้ไฟล์> โครงสร้างโครงการและยืนยันว่าคุณเห็นไฟล์. jar ในโหนดโมดูล
doydoy

11
การทำให้แคชไม่ถูกต้องและการรีสตาร์ทไม่ได้ผลสำหรับฉัน ฉันได้ลองติดตั้งสตูดิโอ Android ใหม่และนำเข้าโครงการอีกครั้ง มันน่ารำคาญมาก ...
นาฬิกา

3
"ไฟล์" -> "ทำให้แคชไม่ถูกต้อง ... " เพิ่งบันทึกวันของฉัน ฉันเสียเวลากับปัญหานี้มาก เหตุใดคำตอบนี้จึงไม่ใช่ผลการค้นหาอันดับต้น ๆ ขอบคุณมาก!
Eric Cochran

1
ขอแสดงความขอบคุณ
Yevgeny Simkin

33

ลองเปลี่ยนลำดับของการอ้างอิงในไฟล์> โครงสร้างโครงการ> (เลือกโครงการของคุณ)> การอ้างอิง

แคชที่ไม่ถูกต้องไม่ได้ผลสำหรับฉัน แต่การย้ายโครงสร้างของฉันจากด้านล่างสุดของรายการไปด้านบนทำได้


การเปลี่ยนลำดับของการอ้างอิงช่วยฉันได้ฉันลองใช้วิธีแก้ปัญหาทั้งหมดที่ให้ไว้ในคำตอบขอเพียงคุณช่วยฉันด้วย
wqycsu

การย้ายการพึ่งพาเพียงครั้งเดียวเป็นเคล็ดลับสำหรับฉัน! (Android Studio 3.0.1)
เซบาส

ใช่มันไม่สำคัญว่าคุณจะย้ายการพึ่งพาอะไรเพียงแค่เปลี่ยนลำดับของใครก็ตามสิ่งนี้ใช้ได้กับ Android Studio 3.3 ด้วย
karique

12

นี่คือสิ่งที่ได้ผลสำหรับฉัน

ในแผงโครงการคลิกขวาที่ชื่อโครงการและเลือกOpen Module Settingsจากเมนูป๊อปอัป

จากนั้นเปลี่ยนไฟล์ Compile SDK Versionเวอร์ชันขั้นต่ำที่มี (เวอร์ชัน sdk ขั้นต่ำที่คุณตั้งไว้ในโครงการ) รอให้ android studio โหลดทุกอย่าง

มันจะทำให้คุณมีข้อผิดพลาดบางอย่างไม่ต้องสนใจสิ่งเหล่านั้น

ตอนนี้ไปที่ไฟล์ java ของคุณแล้ว android studio จะแนะนำให้คุณนำเข้า

นำเข้า android.support.v4.app.FragmentActivity;

นำเข้าจากนั้นกลับไปOpen Module Settingsและเปลี่ยนเวอร์ชัน sdk คอมไพล์ให้กลับไปเป็นเหมือนเดิม

รอให้สิ่งต่าง ๆ โหลดและ voila


มันเป็นงานที่ยอดเยี่ยม ในกรณีของฉัน Android Studio รายงานว่า Classes ของ SDK ทั้งหมดไม่สามารถแก้ไขได้ (รวม String, Integer, TextView และอื่น ๆ ) ก่อนหน้านั้น aStudio ยังบอกฉันว่าเธอไม่พบ Android-14 SDK ที่ฉันใช้ในการรวบรวมโครงการของฉัน ฉันเพิกเฉยต่อปัญหาที่เกิดขึ้น ในที่สุดฉันก็พบคำตอบนี้และทำตามเปลี่ยนเวอร์ชันคอมไพล์ sdk แล้วใช้งานได้ ขอบคุณที่ช่วยฉันเวลา
VinceStyling

Now go to your java file and android studio will suggest you importไม่ใช่ในกรณีของฉัน
NineCattoRules

9

สำหรับของฉันเกิดจากโครงการไลบรารีที่นำเข้าพิมพ์บางอย่างใน build.gradle และลบอีกครั้งแล้วกดซิงค์ทันทีข้อผิดพลาดหายไป


6

ฉันมีปัญหานี้กับแอพ Android ด้วยซึ่งขึ้นอยู่กับไลบรารี Android ของฉันเอง (ใช้ Android Studio 3.0 และ 3.1.1)

เมื่อใดก็ตามที่ฉันอัปเดต lib และกลับไปที่แอปโดยเรียกใช้ Gradle Sync Android Studio ไม่สามารถตรวจพบการเปลี่ยนแปลงโค้ดที่ฉันทำกับ lib การคอมไพล์ทำงานได้ดี แต่ Android Studio แสดงข้อผิดพลาดสีแดงบนโค้ดบางโค้ดโดยใช้ lib

หลังจากตรวจสอบฉันพบว่าเป็นเพราะ gradle ชี้ไปที่ libs เวอร์ชันเก่าที่คอมไพล์แล้ว หากคุณไปที่โครงการ / .idea / libraries / ของคุณคุณจะเห็นรายการไฟล์ xml ที่มีลิงก์ไปยัง libs เวอร์ชันคอมไพล์ของคุณ ไฟล์เหล่านี้เริ่มต้นด้วย Gradle__artifacts _ *. xml (โดยที่ * คือชื่อ libs ของคุณ)

ดังนั้นเพื่อให้ Android Studio ใช้ libs เวอร์ชันล่าสุดคุณจะต้องลบไฟล์ Gradle__artifacts _ *. xml เหล่านี้จากนั้น Android Studio จะสร้างไฟล์เหล่านี้ขึ้นมาใหม่โดยชี้ไปที่ libs เวอร์ชันที่รวบรวมล่าสุดของคุณ

หากคุณไม่ต้องการทำสิ่งนั้นด้วยตนเองทุกครั้งที่คุณคลิกที่ "Gradle sync" (ใครจะอยากทำ ... ) คุณสามารถเพิ่มงาน gradle ขนาดเล็กนี้ในไฟล์ build.gradle ของแอปของคุณ

task deleteArtifacts {
    doFirst {
        File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
        File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)

        for (int i = 0; i < files.length; i++) {
            files[i].delete()
        }
    }
}

และเพื่อให้แอปของคุณดำเนินการงานนี้ก่อนที่จะทำการซิงโครไนซ์แบบค่อยเป็นค่อยไปคุณเพียงแค่ไปที่หน้าต่าง Gradle จากนั้นค้นหางาน "deleteArtifacts" ภายใต้แอปของคุณ / งาน / อื่น ๆ / คลิกขวาที่มันแล้วเลือก "ดำเนินการ ก่อนการซิงค์ "(ดูด้านล่าง)

หน้าต่าง Gradle เพื่อกำหนดค่าการเรียกใช้งาน

ตอนนี้ทุกครั้งที่คุณทำการ Gradle sync Android Studio จะถูกบังคับให้ใช้ libs เวอร์ชันล่าสุดของคุณ


5

เมื่อฉันพบปัญหานี้ (รหัสสีแดง แต่ทำงานได้อย่างถูกต้อง) ในโครงการของฉัน

อย่างแรกฉันทำมันเป็น (File -> Indicate Cashes) -> (Invalidate and Restart)

สุดท้ายนี้ฉันซิงค์ไฟล์ build.gradle ในแอพของฉันอีกครั้ง หลังจากแก้ไขปัญหาแล้ว


3

Invalidate Caches / Restart คราวนี้ไม่ได้ผลสำหรับฉัน

พบวิธีแก้ปัญหาดังนี้:

  1. ลบcompile ***หรือimplementation ***บรรทัดใน build.gradle

  2. ทำความสะอาดและสร้างใหม่ ข้อผิดพลาดควรได้รับการเลี้ยงดูที่นี่

  3. เพิ่มบรรทัดในขั้นตอนที่ 1 กลับไปที่ build.gradle

  4. ทำความสะอาดและสร้างใหม่

แปลก...


2

ปัญหานี้เกิดขึ้นกับฉันเมื่อโครงการ Glass ของฉันไม่ได้ใช้ SDK ที่ติดตั้งในตำแหน่งเริ่มต้นของ Android Studio ฉันใช้ตำแหน่งอื่นที่เคยมาจาก ADT เนื่องจากฉันพยายามหลีกเลี่ยงการดาวน์โหลดทุกอย่างซ้ำ เมื่อฉันชี้โครงการกลับไปที่ตำแหน่ง SDK ในตำแหน่งการติดตั้งของ Android Studio ปัญหาก็หายไป


ใช่ฉันเดาว่านั่นก็เป็นการตะโกนที่ดีเช่นกัน: โดยค่าเริ่มต้นของสตูดิโอ Android จะตัดสินใจว่า SDK ทั้งหมดถูกติดตั้งในไดเร็กทอรีการติดตั้ง android studio เริ่มต้น สิ่งนี้จะต้องได้รับการแก้ไขหากสิ่งใดไม่เป็นไปตามรูปแบบนั้น
doydoy

2

ฉันมีปัญหานี้มาสองสามวันแล้วและในที่สุดก็คิดออก! วิธีแก้ปัญหาอื่น ๆ ทั้งหมดไม่ได้ผลสำหรับฉัน btw

วิธีแก้ไข: ฉันมีอักขระพิเศษในเส้นทางโครงการของฉัน!

ตรวจสอบให้แน่ใจว่าไม่มีสิ่งเหล่านี้และคุณควรจะสบายดีหรืออย่างน้อยหนึ่งในวิธีแก้ปัญหาอื่น ๆ ที่เหมาะกับคุณ

หวังว่านี่จะช่วยใครสักคน!


โปรดตรวจสอบว่าคุณมีเส้นทางโครงการที่มีอักขระพิเศษเช่น! (เครื่องหมายตกใจ) ในปัญหาที่คล้ายกันที่ฉันพบstackoverflow.com/questions/32477067/…นี่คือสาเหตุที่แท้จริง แอ็พพลิเคชัน Java จำนวนมากดูเหมือนจะไม่ทนต่ออักขระพิเศษดังกล่าว (เช่นการทำ 'gradlew clean' จากเทอร์มินัลจะล้มเหลวและส่ง RunTimeException) ไม่มีวิธีแก้ปัญหาอื่นใดที่โพสต์ทางออนไลน์ช่วยฉันได้ แต่เมื่อฉันลบ! จากเส้นทางและสร้างใหม่ทั้งหมด Android Studio ก็ทำงานได้อย่างน่าอัศจรรย์
Jim C

ว้าวน่าอัศจรรย์! ขอบคุณ :)
Josep Escobar

1

เมื่อเร็ว ๆ นี้ฉันมีปัญหาเดียวกันกับ Android Studio 1.3 ทางออกเดียวที่ใช้งานได้คือลบโฟลเดอร์. gradle และ .idea และนำเข้าโครงการไปยัง Android Studio อีกครั้ง


1

สำหรับผู้ที่ลองใช้คำตอบที่ยอมรับและไม่ประสบความสำเร็จ

ฉันลองใช้คำตอบที่ยอมรับแล้วและไม่ได้ผลสำหรับฉัน หลังจากนั้นฉันอัปเดตโปรเจ็กต์ของฉันด้วยที่เก็บและซิงโครไนซ์โปรเจ็กต์และคำเตือนไม่สามารถแก้ไขได้หายไป



1

หากไม่มีอะไรช่วยคุณสามารถทำได้เนื่องจาก Android Studio ไม่สามารถแก้ไขสัญลักษณ์ที่แนะนำได้ทันที:

  • ออกจาก Android Studio
  • สำรองโครงการของคุณ
  • ลบไฟล์. iml และโฟลเดอร์. ida ทั้งหมด
  • เปิด Android Studio ขึ้นมาใหม่และนำเข้าโครงการของคุณอีกครั้ง

0

ในกรณีของฉันฉันได้สร้างไฟล์ใหม่โดยใช้ GUI และกำหนดอินเทอร์เฟซภายในไฟล์ ฉันได้รับข้อผิดพลาดเกี่ยวกับสัญลักษณ์นี้อยู่เรื่อย ๆ เนื่องจากไฟล์ไม่ใช่ไฟล์ "java" มันไม่มีส่วนขยายใด ๆ เลย

หลังจากแก้ไขนามสกุลไฟล์เป็น ".java" ระบบจะค้นหาสัญลักษณ์ได้อย่างถูกต้อง


0

ในกรณีของฉันไฟล์ jar ไม่มีไฟล์ META-INF / MANIFEST.MF หลังจากเพิ่มเข้าไปก็ใช้งานได้!


0

สำหรับกรณีของฉันที่ทำงานกับ AndroidStudio 2.2.3 วิธีแก้ปัญหาคือเปลี่ยน gradle wrapper / distribution ให้ใช้แบบโลคัลใน Gradle Settings (แม้ว่าจะ "แนะนำ" ก็ตาม) ป้อนคำอธิบายภาพที่นี่


0

สิ่งนี้ใช้ได้ผลสำหรับฉัน - (ไฟล์ -> ระบุ Cashes) -> (ไม่ถูกต้องและรีสตาร์ท)


0

ฉันพยายามยกเลิกการแคช / รีสตาร์ทหรือล้างโปรเจ็กต์ -> สร้างโครงการใหม่ สิ่งเหล่านี้ไม่ได้ผลสำหรับฉัน

ทางออกสุดท้ายคือเปิดหน้าต่างโครงการทางด้านซ้ายของ IDE ภายใต้โหมดโปรเจ็กต์ลบโฟลเดอร์. gradle และ .idea จากนั้นคุณสามารถยกเลิกการแคชและรีสตาร์ทได้ สิ่งนี้แก้ไขได้



0

การเปลี่ยนการตั้งค่าการแทรกภาษาได้ผลสำหรับฉัน

วางเคอร์เซอร์บนโค้ดที่ขีดเส้นใต้สีแดงและ Alt + Enter

ป้อนคำอธิบายภาพที่นี่

ตอนนี้เลือกLanguage Injection Settingsและหน้าต่างจะเปิดขึ้นตามที่แสดงด้านล่าง

ป้อนคำอธิบายภาพที่นี่

ยกเลิกการเลือกตัวเลือกที่เลือกแล้วคลิกตกลง

ป้อนคำอธิบายภาพที่นี่

หวังว่านี่จะช่วยใครสักคน


0

มันเกิดขึ้นกับฉันเมื่อฉันลบไฟล์ทั้งหมดออก.gradle/cachesจากนั้นสตูดิโอดาวน์โหลดการอ้างอิง การพึ่งพาไม่ปรากฏในExternal Librariesแต่ฉันสามารถสร้างแอปได้สำเร็จ rebuild clean Invalidate and Restartไม่มีผลกระทบ ฉันแก้ไขปัญหาตามขั้นตอน:

  • ปิด Android Studio โดยสมบูรณ์
  • ลบ.ideaแพ็คเกจในโปรเจ็กต์ของคุณ
  • รีสตาร์ท Android Studio

0

ฉันได้ลองแล้ว แต่ไม่มีอะไรได้ผลสำหรับฉัน:

  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files
  • Clean -> Rebuild Project

ในกรณีของฉันเพียงแค่ทำ:

  • Delete all files in .idea/libraries folder
  • Rebuild Project


0

ฉันพบวิธีที่ง่ายที่สุด

ระบุไลบรารีที่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ใน Studio

ตัวอย่างเช่นหากAppCompatActivityแสดงข้อผิดพลาดคุณจะดำเนินการด้านล่างบน AppCompat Dependency

  • ลบการอ้างอิงซึ่งแสดงข้อผิดพลาดทางไวยากรณ์และการซิงค์
  • เพิ่มอีกครั้ง & ซิงค์

นั่นแหละข้อผิดพลาดหายไป!

ก่อน

ก่อน

หลังจาก

หลังจาก


0

คำตอบข้างต้นไม่เหมาะกับฉัน

หลังจากพยายามหลายครั้งฉันอัปเกรด com.android.tools.build:gradle ใน Project / build.gradle จาก 2.3.0 เป็น 3.0.1 และใช้งานได้

ฉันเดาว่าเวอร์ชันของ com.android.tools.build:gradle ควรตรงกับเวอร์ชันของ AndroidStudio และเวอร์ชัน AS ของฉันคือ 3.2.1



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.