Intellij ไม่สามารถแก้ไขสัญลักษณ์เมื่อนำเข้า


130

ปัญหานี้เกิดขึ้นเป็นระยะ ๆ สำหรับไลบรารีและโครงการต่างๆ เมื่อพยายามนำเข้าไลบรารีแพ็กเกจจะได้รับการจดจำ แต่ไม่สามารถแก้ไขชื่อคลาสได้

ถ้าในคำสั่งการนำเข้าฉันright-click -> Goto -> the package's declarationฉันเห็นคลาสที่แยกย่อยทั้งหมดแสดงในบานหน้าต่างด้านข้าง - รวมถึงคลาสที่ฉันต้องการ - ถ้าฉันพยายามเติมคำสั่งนำเข้าโดยอัตโนมัติฉันสังเกตเห็นว่าคลาสที่ฉันต้องการไม่มีอยู่ใน หล่นลง.

ฉันพยายามทำให้แคชไม่ถูกต้องแล้วไม่ได้ผล ฉันไม่พบข้อขัดแย้งของคลาสใด ๆ - ไม่มีไฟล์ jar อื่นใน classpath ของฉันที่มีชื่อแพ็กเกจเดียวกัน ฉันสามารถนำเข้าคลาสนี้ไปยังโปรเจ็กต์อื่นได้

โปรดดูภาพหน้าจอ:

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่

ใครมีเบาะแส?


1
แน่ใจหรือว่าเพิ่มไลบรารีลงในโมดูลแล้ว สามารถเพิ่มเป็นไลบรารีโครงการ แต่ไม่สามารถเพิ่มได้ในคลาสพา ธ ของโมดูล
mkobit

ใช่ - ในโครงสร้างโปรเจ็กต์ไลบรารีจะถูกเพิ่มเป็นการอ้างอิง - อันที่จริงฉันคิดว่านี่เป็นข้อบกพร่องใน Intellij - เกิดขึ้นแบบสุ่มสำหรับไลบรารี / โปรเจ็กต์ต่างๆ - การสร้างโปรเจ็กต์ใหม่ตั้งแต่ต้นมักจะแก้ไขได้
Asaf Ebgi

หากทุกสิ่งที่กล่าวถึงในคำตอบนั้นเหมาะสม ปิดโครงการและนำเข้าใหม่อีกครั้ง สิ่งนี้ช่วยแก้ปัญหานี้ให้ฉันได้
Hari Krishnan

คำตอบ:


250

คุณสามารถลองทำให้แคชเป็นโมฆะและรีสตาร์ท intellij ได้ในหลาย ๆ กรณีจะช่วยได้

ไฟล์ -> ไม่ถูกต้องแคช / รีสตาร์ท


โครงการทำความสะอาดยังช่วย
GeRyCh

2
@GeRyCh IMHO, Eclipse cleaning = Intellij Invalidate cache
Gangnus

ไม่ได้ผลสำหรับฉันด้วย JUnit ของฉันคือ 'Global Library' เมื่อฉันลบสิ่งนี้และเพิ่มการกระจาย JUnit5 ของ IntelliJ เองก็ใช้งานได้ เมื่อฉันแปลงการอ้างอิงนี้เป็นไลบรารีส่วนกลางอีกครั้งข้อผิดพลาดจะกลับมา ฉันสงสัยว่านี่เป็นข้อผิดพลาดเพราะการแปลงเป็นไลบรารีโครงการทำงานได้ดี
Mark Jeronimus

1
ขอบคุณสิ่งนี้ได้ผลสำหรับฉัน ฉันเพิ่งเริ่มใช้ Intellij และรู้สึกรำคาญกับมันมาก ไม่สามารถกระโดดออกจากวงเล็บได้ต้องรีสตาร์ทโปรแกรมเพื่อให้คอมไพล์ถูกต้องนี่คือ Windows ของ Java IDE อย่างแท้จริง
azureai

3
ฉันมีปัญหานี้อย่างน้อยวันละครั้งตั้งแต่ไม่กี่สัปดาห์ ทำให้ฉันเครียดจริงๆเพราะการจัดทำดัชนีใหม่ทุกอย่างใช้เวลาตลอดไป
spyro

39

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

ตรวจสอบรากที่มาของโมดูลของคุณ

  1. โครงสร้างโครงการ ( Ctrl+ Alt+ Shift+ S)

  2. โมดูล

  3. เลือกโมดูลปัญหาของคุณ

  4. เปลี่ยนแท็บที่ด้านบนของหน้าต่าง "แหล่งที่มา"

  5. ลบรากต้นทางที่ไม่ต้องการ เก็บหนึ่งไว้และเพิ่ม src และทดสอบรากที่มาในรูทนี้


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

ดูเหมือนว่าเมื่อคุณมีปัญหาหลายโฟลเดอร์ซอร์ส (src) เกิดขึ้น ซึ่งอาจเกิดจากการซ้ำกันของเส้นทาง ในกรณีที่ฉันมีโฟลเดอร์ซอร์สหลักและโฟลเดอร์ย่อยภายในซอร์สพร้อมแพ็คเกจเพิ่มเติม ตรวจสอบให้แน่ใจว่ามีโฟลเดอร์ซอร์สเพียงโฟลเดอร์เดียวและไม่ควรเพิ่มโฟลเดอร์ย่อยทั้งหมดลงในซอร์ส เพื่อให้แน่ใจว่าไม่มีเส้นทางไฟล์ซ้ำกัน ขอบคุณ @inetphantom.
Vectoria

17

IntelliJ มีปัญหาในการแก้ไขการอ้างอิง ลองทำดังต่อไปนี้:

  1. คลิกขวาที่ pom.xml -> Maven -> Reimport
  2. คลิกขวาอีกครั้งที่ pom.xml -> Maven -> สร้างแหล่งข้อมูลและอัปเดตโฟลเดอร์

12

ตรวจสอบการอ้างอิงโมดูลของคุณ

  1. โครงสร้างโครงการ ( Ctrl+ Alt+ Shift+ S)
  2. โมดูล
  3. เลือกโมดูลปัญหาของคุณ
  4. เปลี่ยนแท็บที่ด้านบนของหน้าต่าง "Dependencies"
  5. ตรวจสอบสิ่งที่ต้องการไลบรารี (บางทีคุณอาจต้องเพิ่มไลบรารีที่ระบุในแท็บ 'ไลบรารี') หรือโมดูลที่ระบุไว้ที่นี่และมีขอบเขตที่ถูกต้อง (ส่วนใหญ่ 'compile')

12

เรียกใช้คำสั่งนี้ในคอนโซลโครงการของคุณ:

mvn idea:idea

เสร็จสิ้น มีปัญหานี้หลายครั้ง พยายาม 'Invalidate Cache & Restart' และวิธีแก้ปัญหาอื่น ๆ ทั้งหมด การเรียกใช้คำสั่งนั้นทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน ฉันกำลังใช้ IntelliJ 2019.2 แต่สิ่งนี้ก็เกิดขึ้นในเวอร์ชันก่อนหน้าและวิธีแก้ปัญหาก็ใช้ได้เช่นกัน


Btw นี้ Maven ปลั๊กอินไม่ได้รับการบำรุงรักษา
nabster

11

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


การรวบรวมมากกว่าการทดสอบใช้ได้ผลสำหรับฉัน คุณรู้ไหมว่าทำไม?
30 ก.ย. 59

1
คุณจะทำอย่างไร? ไมค์คือใคร?
cellepo

8

ไฟล์ -> ไม่ถูกต้องแคช / รีสตาร์ทหรือสร้างโครงการใหม่ไม่ได้ผล

สิ่งที่ใช้ได้ผลกับโปรเจ็กต์ Gradle ของฉันคือ "รีเฟรชโปรเจ็กต์ Gradle ทั้งหมด" จากแท็บ Gradle ที่มุมขวาบนของ IntelliJ v2017 โดยใช้ปุ่มที่มีเครื่องหมายสีเหลืองที่แสดงด้านล่าง:

ใส่คำอธิบายภาพที่นี่


คำตอบนี้ใช้ได้ผลกับโครงการ Maven ของฉันด้วย สำหรับ IntelliJ 2018.3.4 ไอคอนจะยังคงเหมือนเดิม (ลูกศรเลี้ยวสีน้ำเงิน) แต่ชื่อที่แน่นอนของตัวเลือกนี้เรียกว่า 'Reimport All Maven Projects' เป็นเรื่องใหญ่สำหรับผู้เขียนจึง
TomateFraiche

4

ฉันพบคำตอบต่อไปนี้จาก@ jossef-harushและ@ matt-leidholm ที่เป็นประโยชน์จากลิงก์อื่น

  • ในตัวแก้ไข IntelliJ คลิกที่คีย์เวิร์ดสีแดง( Integerเช่น)แล้วกดALT+ ENTER(หรือคลิกไอคอนหลอดไฟ)
  • เลือกSetup JDKจากเมนูความตั้งใจ

เมนู IntelliJ ตั้งใจ

  • คลิกที่ Configure

กล่องโต้ตอบการเลือก Project SDK

  • ในกรณีของฉันJDKเส้นทางไม่ถูกต้อง (ชี้/opt/jdk1.7.0_51แทน/opt/jdk1.7.0_65)

กล่องโต้ตอบ Configure SDK เสีย

  • คลิกที่...และเรียกดูJDKเส้นทางที่ถูกต้อง

แก้ไขไดอะล็อก Configure SDK

  • มาล้างแคชกัน

เมนูไฟล์ IntelliJ



3

คลิกขวาที่ไฟล์ pom.xml ไปที่ Maven คลิกที่ Reimport ฉันมีปัญหาที่คล้ายกันและสิ่งนี้ใช้ได้ผลสำหรับฉัน


1

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


นี่ไม่ใช่วิธีแก้ปัญหาจริงๆ ฉันเคยลองใช้ แต่มันไม่มีผลกับกรณีของฉัน
ตุง

1

ฉันยังได้รับข้อผิดพลาดนี้หลายครั้งเมื่อพยายามสร้างโครงการ java ใหม่

ด้านล่างนี้เป็นขั้นตอนในการแก้ปัญหาโง่ ๆ นี้

  1. src/main/javaสร้างโครงการที่ว่างเปล่าและสร้างไดเรกทอรีใหม่
  2. net.gongmingqm10.sketchสร้างแพคเกจที่มา
  3. การใช้งานgradle wrapper, gradle ideaการสร้างสิ่งที่ gradle สำหรับโครงการ
  4. เพิ่มการอ้างอิงบางส่วนในbuild.gradleไฟล์และgradle buildนำเข้าโครงการอีกครั้ง
  5. สร้างUser.javaและSchool.javaในแพ็คเกจที่มีอยู่net.gongmingqm10.sketch
  6. ฉันได้รับข้อผิดพลาดขณะพยายามใช้ import School ใน User.java
  7. Intellij ช่วยให้การร้องเรียนไม่สามารถแก้ไขสัญลักษณ์ในการนำเข้า

สารละลาย:

สร้างโปรเจ็กต์ก่อนและทำเครื่องหมาย main / java เป็นรูทต้นทาง สร้างไดเรกทอรีใหม่net.gongmingqm10.sketchที่มีชื่อเดียวกัน ย้ายไฟล์ทั้งหมดจากแพ็คเกจเก่าที่มีปัญหาไปยังแพ็คเกจใหม่

สาเหตุ:

แผนผังไดเร็กทอรีของซอร์สโค้ด

ดังที่คุณเห็นจากต้นไม้ net.gongmingqm10.sketchผมได้ไดเรกทอรีชื่อ แต่สิ่งที่เราต้องการจริงๆคือไดเร็กทอรี 3 ระดับ: net-> gongmingqm10-> sketch

แต่ก่อนที่จะเสร็จสิ้นการสร้างโครงการของฉันใน Intellij ผมสร้างไดเรกทอรีใหม่ชื่อซึ่งจะให้ฉันไดเรกทอรีจริงกับชื่อnet.gongmingqm19.sketchnet.gongmingqm10.sketch

เมื่อเราพยายามที่จะนำเข้า เห็นได้ชัดว่า intellij สามารถนำเข้าไฟล์ภายใต้ไดเร็กทอรี weired ที่มีชื่อa.b.cได้อย่างไร


ขอบคุณเพื่อนนี่คือปัญหาของฉัน แก้ไข: อธิบายอย่างละเอียด ... ฉันคัดลอกจากโมดูล 1 maven ไปยังอีกโมดูลหนึ่งและสำเนาก็แบนไดเร็กทอรี ในขณะที่ดูเหมือนว่า Intellij มีการจัดเรียงทุกอย่าง แต่จริงๆแล้วโฟลเดอร์ของฉันเป็น "abc" แทนที่จะเป็น a> b> c
Qbert

1

@Anton Dozortsev ฉันถูกขับเคลื่อนด้วยพฤติกรรมที่คล้ายกันอย่างบ้าคลั่ง ฉันลงเอยด้วยการติดตั้ง IDE ซ้ำหลายครั้งเพียง แต่ผ่านพ้นปัญหาไปได้หลังจากลบแอป IDEA แคชค่ากำหนดทั้งหมด ฯลฯ

ฉันพยายามทุกชนิดของขั้นตอนในระหว่างกาล (ชอบเตะ, invalidations การลบ.ideaและ*.imlไฟล์และอื่น ๆ .)

ปรากฎว่าปัญหาเกิดจากการidea.max.intellisense.filesizeตั้งค่าของ IntelliJ ฉันตั้งค่าเป็น 100KB ซึ่งเล็กกว่าขนาดของการพึ่งพาของฉันทำให้ IntelliJ แสดงว่าไม่รู้จักเช่นเดียวกับในภาพหน้าจอของคุณ

การแก้ไข:

  1. คลิกที่ Help -> Edit Custom Properties

  2. ตั้งค่าคุณสมบัติให้มีค่ามากขึ้น ค่าเริ่มต้นคือ 2500KB idea.max.intellisense.filesize=2500


1

มีปัญหาเดียวกันจนกระทั่งฉันสังเกตเห็นว่าโฟลเดอร์srcถูกทำเครื่องหมายว่าเป็น root sourceแทนที่จะเป็นjava ! การเปลี่ยนเป็นเฉพาะ java (src / main / java) เป็นต้นทางช่วยแก้ปัญหาของฉันได้ ใส่คำอธิบายภาพที่นี่


1

หลังจากการค้นหาเป็นเวลานานฉันพบว่าการพึ่งพาได้รับความเสียหายในเครื่องของฉันในโครงการ maven สิ่งที่แปลกคือการพึ่งพายังคงทำงานอย่างถูกต้องในโค้ดจาวาที่คอมไพล์แล้ว เมื่อฉันทำความสะอาดและสร้างใหม่ maven dependency cache อย่างไรก็ตามปัญหาก็หายไปและ IntelliJ ก็จำแพ็คเกจได้ คุณสามารถทำได้โดยเรียกใช้:

mvn dependency:purge-local-repository

แท้จริงแล้วต้นตอของปัญหาของฉันจึงไม่ใช่ IntelliJ แต่เป็นตัวของตัวเอง


1

โปรดลอง File-> Synchronize จากนั้นปิดและเปิด IntelliJ ใหม่ก่อนที่คุณจะยกเลิกการใช้งาน

เมื่อฉันเริ่มต้นใหม่ ฉันจะไม่ถูกต้อง แต่การซิงโครไนซ์ล้างทุกอย่างหลังจากรีสตาร์ท


0

การเริ่มต้นใหม่อย่างง่ายใช้ได้ผลสำหรับฉัน

ฉันขอแนะนำให้ลองรีสตาร์ทก่อนจากนั้นคุณอาจเลือกที่จะทำให้แคชเป็นโมฆะ

ป.ล. : การล้างแคชของระบบจะส่งผลให้ล้างประวัติท้องถิ่น


0

ฉันมีปัญหาคล้ายกันกับโครงการ Maven ที่นำเข้าของฉัน ในโมดูลเดียวไม่สามารถแก้ไขสัญลักษณ์ในการนำเข้าสำหรับบางส่วนของโมดูลอื่นได้ (ใช่ส่วนหนึ่งของโมดูลนั้นสามารถแก้ไขได้)

ฉันเปลี่ยน "ไดเรกทอรีหลัก Maven" เป็นเวอร์ชันที่ใหม่กว่าเพื่อแก้ไขปัญหาของฉัน

Update: ดี 1 ชม. กลับสถานะเสีย ...


0

เจอต้นตอแล้ว!

ในกรณีของฉันฉันเพิ่มไฟล์ jar รวมไฟล์ซอร์ส java ไว้ด้วย แต่ฉันคิดว่าซอร์ส java ไม่ดีในไลบรารีการพึ่งพา Intellij Idea จะเพิ่มซอร์สโดยอัตโนมัติดังนั้นใน Editor การนำเข้าจึงเป็น BAD remove เพียงแค่ลบซอร์สโค้ดใน " โครงสร้างโครงการ "->" ห้องสมุด "มันใช้ได้สำหรับฉัน


0

อะไรมันสำหรับฉันคือการแก้ไขแฟ้มแพคเกจในโฟลเดอร์ .idea ที่ผมตั้งใจเพิ่มแหล่งที่มาไปยังห้องสมุดขวดนี้และหุ่นยนต์ไม่สามารถแก้ปัญหาได้โดยการลบเส้นเป็นแหล่งทำเครื่องหมาย b / เมตรภาพข้อผิดพลาดห้องสมุด

จากนั้นสร้างปัญหาของแบมและแบมขึ้นมาใหม่


0

ฉันมีปัญหาเดียวกันและสาเหตุของการทำเครื่องหมายแหล่งที่มาของโครงการไม่ถูกต้อง

ฉันสร้างเนื้อหารูทด้วยตนเองและไม่สังเกตว่าsrc/main/testโฟลเดอร์นั้นถูกทำเครื่องหมายเป็นSourcesแทนที่จะเป็นTestsไฟล์. ดังนั้นนั่นคือเหตุผลที่การเรียนการทดสอบของฉันได้รับการสันนิษฐานว่าจะมีห้องสมุดการทดสอบของพวกเขาทั้งหมด ( JUnit, Mockitoฯลฯ ) กับขอบเขตของการคอมไพล์ที่ไม่ได้ทดสอบ

ทันทีที่ฉันทำเครื่องหมายsrc/main/testว่าเป็นการทดสอบและสร้างโมดูลขึ้นมาใหม่ข้อผิดพลาดทั้งหมดก็หายไป


0

ฉันเพิ่งใช้สิ่งนี้เมื่อเร็ว ๆ นี้ในขณะที่พยายามใช้ Intellij เพื่อทำงานกับ NiFi พบว่าปัญหาคือ NiFi ต้องการ Maven> = 3.1.0 และเวอร์ชันที่ฉันใช้ (ฉันเดาว่าค่าเริ่มต้นของฉัน) คือ 3.0.5 การอัปเดตเวอร์ชัน Maven สำหรับโครงการได้รับการแก้ไขดังนั้นในบางกรณีการจัดตำแหน่งที่ไม่ถูกต้องของเวอร์ชัน Maven อาจเป็นเรื่องที่ต้องดู ... ฉันคิดว่ามันค่อนข้างผิดปกติ แต่ถ้าคุณไปไกลกว่านี้ในเธรดคุณอาจมี ปัญหาผิดปกติ :)


0

ปัญหาเดียวกัน. หากวิธีการเหล่านี้ไม่ได้ผล คุณสามารถลองลบ lib จากที่เก็บ maven ในเครื่องและนำเข้าใหม่ไปยัง pom

ที่เก็บ mvn

ในที่สุดมันก็ดีสำหรับฉัน

โครงการ


0

file-> Project Structure-> Modulesค้นหาโมดูลที่มีปัญหาคลิกแล้วเลือกDependenciesแท็บทางด้านขวา คลิกที่เครื่องหมายบวกสีเขียวพยายามเพิ่ม jar หรือไลบรารีที่ทำให้เกิดปัญหา ที่เหมาะกับฉัน


0

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

เมื่อ "2-version" ได้รับการแก้ไขอย่างมีความสุขทุกที่แล้วฉันก็สามารถ refactor และลบ 2 ออกจากคลาสและไฟล์ได้และทุกอย่างก็เป็นไปตามที่ควรจะเป็น


0

ในกรณีของฉันวิธีแก้ปัญหาคือการเพิ่มโครงการเป็นโครงการ maven นอกเหนือจากข้อเท็จจริงที่ว่าฉันนำเข้าเป็นโครงการ maven: P

ไปที่ pom.xml -> คลิกขวา -> เพิ่มเป็นโครงการ maven


0

Intelli iDEA ทำให้เกิดปัญหาโง่ ๆ เหล่านี้ @ ครั้ง ง่ายๆ goto pom.xml คลิกขวาแล้วทำ -> Maven -> Reimport

สิ่งนี้ควรแก้ปัญหาได้


0

สำหรับ 2020.1.4 Ultimate edition ฉันต้องทำสิ่งต่อไปนี้

View -> Maven -> Generate Sources and Update Folders For all Projects

ปัญหาสำหรับฉันคือห้องสมุดไม่ได้รับการเติมข้อมูล mvn -U clean installจากเทอร์มินัล

ใส่คำอธิบายภาพที่นี่


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