แพ็คเกจ Maven ใช้งานได้ แต่บิวด์ของ Intellij ล้มเหลว


95

ฉันมีโครงการ JDK 1.7 ที่มีการพึ่งพา maven กับ jar ในพื้นที่ในที่เก็บ maven ของฉัน

ฉันไม่สามารถสร้างโปรเจ็กต์โดยใช้ Intellij โดยมีข้อผิดพลาดที่ไม่พบสัญลักษณ์ (สัญลักษณ์คือคลาสที่นำเข้าแพ็กเกจจาก jar ในเครื่อง)

แต่ฉันสามารถสร้างโครงการได้สำเร็จโดยใช้ 'แพ็คเกจ mvn'

ฉันใช้เวลามากมายในการค้นหาวิธีแก้ปัญหาสิ่งที่ฉันได้ทำไปแล้ว:

  • แคชไม่ถูกต้อง
  • 'mvn clean install' การพึ่งพา jar ในเครื่อง
  • ทำเครื่องหมายเป็น 'autoload snapshots' ในการกำหนดค่า maven ของ Intellij
  • Reimpoted maven ใน Intellij
  • ซิงค์

ข้อผิดพลาดนี้เกิดขึ้นกับสองสามครั้งก่อนหน้านี้ แต่โดยปกติแล้วเพียงแค่ปิด Intellij และ / หรือทำการ 'mvn clean install' ก็เป็นเคล็ดลับ

กรุณาช่วย.


1
ที่เก็บ maven ของคุณกำหนดค่าอย่างถูกต้องกับ IntelliJ หรือไม่?
Ruchira Gayan Ranaweera

ใช่เส้นทางสำหรับที่เก็บเป็นเส้นทางที่อัปเดตเมื่อฉันใช้ 'mvn install'
Yarin Miran

3
โถท้องถิ่นเป็นสแนปชอตหรือโถรุ่นที่วางจำหน่าย? หาก jar เป็นสแนปชอตคุณต้องตรวจสอบ "อัปเดตสแนปช็อตเสมอ" ในการตั้งค่า intellij Maven เพื่อบังคับให้อัปเดตสำหรับ ide
F. Geraerts

ใช่มันเป็นสแนปชอตฉันทำเครื่องหมายตัวเลือกนั้นแล้ว แต่ถึงกระนั้นก็ไม่มีอะไรเปลี่ยนแปลง :(
Yarin Miran

1
ในส่วนคอมไพเลอร์ของการตั้งค่ามีการตรวจสอบ "use external build" หรือไม่ และใน Use external build ตัวเลือก "Rebuild module on dependency change" จะถูกตรวจสอบด้วย?
F. Geraerts

คำตอบ:


159

ฉันรู้ว่านี่ล่าช้า แต่การดำเนินการmvn idea:ideaจะช่วยแก้ปัญหาได้


3
นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากเป็นวิธีแก้ปัญหาที่แท้จริงไม่ใช่เพียงเหตุผลว่าทำไมจึงล้มเหลว การอัปเดตทั้งหมดของฉัน!
Warkst

5
mvn idea:ideaยังไม่ได้รับการปรับปรุงให้ทันสมัยและไม่ได้รับการดูแลโดย jetbrains
ฌอน

3
ฉันต้องเรียกใช้การติดตั้ง mvn อีกครั้งหลังจากนั้น
Fabio F.

2
คุณช่วยฉันจากความสิ้นหวัง ฉันอยากจะจูบคุณ
Martin Bamford

2
ทำไม intellij ไม่สามารถทำสิ่งนี้ได้คนเดียวหลังจากหลายปีที่ผ่านมา ฉันยังคงต้องเรียกใช้คำสั่งนี้ทุกครั้งที่นำเข้าโครงการใหม่! SMH
RBz

29

พยายามลบ. img และ POM ของคุณทั้งหมด จากนั้นคัดลอกและวาง POM ของคุณอีกครั้งในโปรเจ็กต์ของคุณแล้วเปิดใหม่และนำเข้าอีกครั้ง


13
อาจจะลอง "นำเข้าใหม่ทั้งหมด" ในมุมมองโครงการ Maven ก่อนที่จะลบอะไรก็ได้
Zveratko

3
ฉันต้องลบ. iml ด้วย แต่การนำเข้า maven ใหม่ก็ไม่สามารถแก้ไขได้
Daniel de Zwaan

1
@masoodg ขอบคุณมาก! คุณช่วยวันของฉัน! เพียงแค่นำเข้าใหม่ไม่ได้ช่วยอะไร ทำตามคำแนะนำของคุณและได้ผลเหมือนมีเสน่ห์
tabalin

ปิด Intellij, การลบ*.iml, *.iprและ*.iwsไฟล์จากไดเรกทอรีรากโครงการแล้วเปิด Intellij คงมันสำหรับฉัน
theferrit32

16

ฉันพบว่าไฟล์. img และ pom ของฉันขัดแย้งกันและทำให้เกิดปัญหา


1
ฉันมีปัญหาที่คล้ายกัน ฉันมีการกำหนดค่าด้วยปลั๊กอิน build date ปลั๊กอินนี้ต้องการคุณสมบัติ buildDate ด้วยค่านี้ "$ {maven.build.timestamp}" IntelliJ มีปัญหาในการแยกวิเคราะห์ไฟล์ pom และ iml นี้ไม่ตรงกับ pom เมื่อฉันแสดงความคิดเห็นการซิงโครไนซ์คุณสมบัติ buildDate ทำงานได้ดี
chalimartines

9
เคล็ดลับใด ๆ ในการแก้ไขปัญหานี้ ฉันแค่อยากให้ Intellij ทำงานดูเหมือนว่า Netbeans จะดำเนินโครงการใด ๆ ไม่ว่าจะเป็นอะไรก็ตาม ... นี่คือเครื่องทำลายล้างที่สมบูรณ์แบบ :( ...
Breno Salgado

1
ฉันไม่รู้ว่าการแก้ไขของคุณเหมือนกันหรือไม่ แต่ฉันต้องออกและโหลดโครงการใหม่เพื่อบังคับให้ IntelliJ อัปเดตไฟล์ IML (ไม่ได้รีเฟรชจาก pom.xml เนื่องจากฉันได้เพิ่มการอ้างอิงใหม่)
SonarJetLens

1
'how' ค่อนข้างมีประโยชน์มากกว่า 'why' โปรดเพิ่มรายละเอียดเกี่ยวกับวิธีการแก้ไขปัญหานี้
João Matos

2
ฉันปิด IntelliJ C:\Users\USERNAME\.IntelliJIdea2017.2\systemจากนั้นฉันลบ หลังจากนั้นฉันทำgit clean -xdfในไดเร็กทอรีต้นทางเพื่อลบไฟล์ที่ไม่ใช่เวอร์ชันทั้งหมดและนำเข้าโครงการอีกครั้ง ใช้งานได้เหมือนมีเสน่ห์ในขณะนี้
koppor


15

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

เมื่อฉันมีสิ่งนี้มันเป็นการแก้ไขที่แตกต่างกันใน Windows และ Mac

บน Mac ฉันเข้าไปใน ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory และตั้งค่าให้ใช้ Maven ที่ติดตั้งแยกต่างหากแทนที่จะเป็น Maven ที่แถมมา ปัญหาการสร้างทั้งหมดหายไป

ใน Windows ฉันเห็นข้อยกเว้นใน idea.log ที่เกี่ยวข้องกับ SSL และแผนผังโครงการของฉันมีเฉพาะ Java ภายใต้สาขาไลบรารีภายนอก จากการดูไซต์อื่นดูเหมือนว่า IntelliJ จะใช้ JDK ส่วนตัวของตัวเองแทนที่จะเป็นระบบ (แม้ว่าในกรณีของฉันฉันติดตั้ง JDK เวอร์ชันเดียวกันทั้งหมดแล้วก็ตาม) JDK ระบบของฉันได้รับการรับรองที่ติดตั้งไว้ในที่เก็บคีย์สำหรับเซิร์ฟเวอร์ Nexus ขององค์กรที่ JDK ส่วนตัวของ IntelliJ ไม่มีดังนั้นจึงมีข้อยกเว้นเมื่อพยายามรับไฟล์จาก Nexus สำหรับวิธีนี้วิธีแก้ปัญหาคือการออกจาก IntelliJ ให้ตั้งค่าตัวแปรสภาพแวดล้อมที่เรียกว่า IDEA_JDK เพื่อชี้ไปที่ JDK ที่ฉันติดตั้งไว้ซึ่งมีใบรับรองที่เหมาะสมและรีสตาร์ท IntelliJ ปัญหาการสร้างทั้งหมดหายไป


ปัญหาเดียวกันบน Linux กับ IntelliJ 2016.3.5 ล่าสุด - ก่อนอื่นมันใช้งานได้จากนั้นหลังจากการเปลี่ยนแปลง POM บางอย่างมันได้รับการซิงค์และการสลับ Maven im ช่วยเท่านั้นดังนั้นอาจเป็นไปได้ว่าการเปลี่ยน Maven จะทำให้เกิดการอัปเดตใน IntelliJ ที่ทำให้เกิด โครงการจะซิงค์อีกครั้ง ...
Gregor

5

IDE ใช้สำเนา Maven ที่รวมมาของตัวเองเมื่อทำการสร้าง หาก maven บนเทอร์มินัลแตกต่างจาก IDE คุณต้องการให้เหมือนกัน

GOTO (บน Mac) - IntelliJ Idea -> Preferences -> Build, Execution, Deployment -> Build Tools -> Maven กำหนดเส้นทางสำหรับMaven Home Directoryของคุณ หากต้องการค้นหาเส้นทางสำหรับ Maven ที่คุณใช้จากเทอร์มินัลให้พิมพ์คำสั่งmvn -versionและควรพิมพ์รายละเอียดจำนวนมากรวมทั้งเส้นทาง dir ที่ใส่ในMaven ไดเรกทอรีภายในบ้าน

เพื่อความปลอดภัยคุณสามารถทำเช่นเดียวกันสำหรับตำแหน่ง JDK

==== สิ่งอื่น ๆ ที่อาจทำให้เกิดปัญหาดังกล่าว ===

หากทำแพ็คเกจ mvn หรือ mvn clean install build ก็ต้องทำอะไรบางอย่างกับ IDE caches เหนือสิ่งอื่นใดสิ่งนี้มักจะช่วยให้เกิดข้อผิดพลาดดังกล่าว ->

ไฟล์ -> แคชไม่ถูกต้อง


4

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


หากคุณติดตั้ง maven โดยใช้ homebrew การตั้งค่าโฮมไดเร็กทอรี maven อย่างถูกต้อง (ตัวอย่างเช่น) /usr/local/Cellar/maven/3.5.4/libexec จะช่วยแก้ปัญหานี้ได้
sushilshimpi

3

ในกรณีของฉัน iml ของฉันไม่ได้ซิงค์ดังนั้นฉันจึงลบ iml สำหรับโมดูลเฉพาะจากนั้นภายใต้ตัวเลือก maven ให้เลือก unignore project เพื่อสร้าง iml ใหม่


3

จากพรอมต์คำสั่งดำเนินการคอมมูน: mvn idea:ideaและคลิกขวาที่โปรเจ็กต์ -> จากเมนูนำเข้าการอ้างอิงอีกครั้ง


1

"ไม่พบสัญลักษณ์" หมายความว่า intellij ไม่สามารถแก้ไข "การพึ่งพา" ได้ ดังนั้นคุณสามารถบังคับ "การวิเคราะห์การพึ่งพา" โดยคลิก "วิเคราะห์" -> "วิเคราะห์การอ้างอิง" จากนั้นเลือก "ขอบเขตการวิเคราะห์"


1

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

เราเพิ่งเริ่มใช้ที่เก็บ Maven ส่วนตัวและมักจะทำmvn -s settings.xmlเมื่อเรียกใช้ Maven cmdline แน่นอนว่า IntelliJ ไม่รู้เกี่ยวกับ repo ส่วนตัวดังนั้นจึงต้องการความช่วยเหลือเล็กน้อย

ไปที่ Settings -> Build, Execution, Deployment -> Build tools -> Maven และแทนที่ตัวเลือก "User Settings file"

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


1

ผมมีปัญหาเดียวกัน. ไปที่:

File -> โครงสร้างโครงการ -> โมดูล เลือกโมดูลของคุณและภายใต้แท็บ "การอ้างอิง " ตรวจสอบให้แน่ใจว่าได้เพิ่มการอ้างอิง maven ทั้งหมดแล้ว

เพื่อให้แน่ใจว่าคุณได้รับคำเตือนเกี่ยวกับปัญหาที่คล้ายกันในตัวแก้ไขไอเดียให้เปลี่ยนจาก "แท็บการอ้างอิง" เป็น "แหล่งที่มา" และเพิ่มเครื่องหมาย src ของคุณเป็นแหล่งที่มา


0

ผมมีปัญหาเดียวกัน. ฉันได้เปลี่ยนเวอร์ชัน maven จาก 3.0.5 เป็น 3.0.4 ในการตั้งค่า Idea และตอนนี้ทุกอย่างทำงานได้ดี ไม่รู้ว่าทำไมถึงช่วยฉันได้


0

ฉันพยายามทำให้แคชไม่ถูกต้องเปลี่ยน Maven เป็นเวอร์ชันที่ติดตั้งแล้วและไม่มีอะไรทำงาน

การปิดและสร้างโครงการใหม่ช่วยแก้ปัญหาได้


0

ฉันปิดโปรเจ็กต์และนำเข้าอีกครั้งโดยคลิกที่รูทปอม (ไม่ใช่แค่โฟลเดอร์ แต่เป็นไฟล์ปอมเอง)


0

ฉันลองทุกอย่างข้างต้นโดยไม่มีความสุข อย่างไรก็ตามฉันได้ทำสิ่งหนึ่งที่ทำให้มันใช้งานได้ในที่สุด:

ฉันไปที่ C: \ Users \ .IntellijJIdea2018.2 และเพิ่งลบทั้งโฟลเดอร์

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



0

ขั้นตอนง่ายๆนี้ใช้เวลาประมาณ 1 นาทีโดยไม่มี risc ใด ๆ

  • ปิด IntelliJ
  • ลบเท่านั้นไฟล์ที่เฉพาะเจาะจงเช่น IntelliJ .idea / * * * * * .iml, .settings ฯลฯ ปัญหาถูกลบ POM ได้เป็นอย่างดี แต่ที่ไม่จำเป็น IMHO
  • จากนั้นสร้างโครงการใหม่ใน IntelliJ โดยใช้: ไฟล์ > ใหม่> โครงการจากแหล่งที่มีอยู่> ทำตามขั้นตอน ระวังอย่านำเข้าหลายโปรไฟล์หรือ (โครงการเดียวกัน)

0

ลบโฟลเดอร์ .idea และปิด IDE

เปิด IDE อีกครั้งและนำเข้าโปรเจ็กต์ซึ่งจะทำการอิมพอร์ตใหม่เนื่องจากโฟลเดอร์. IDEA ถูกลบโดยเราก่อนหน้านี้

ตรวจสอบโมดูลไลบรารีภายนอกและหากไม่ได้รับการเติมข้อมูลด้วยการอ้างอิงที่จำเป็นจากนั้นตรวจสอบว่าตำแหน่ง maven settings.xml ได้รับอย่างถูกต้องใน IDE หรือไม่


0

นอกจากนี้ยังมีความเป็นไปได้ที่ไม่ได้กล่าวถึง หากคุณนำเข้าไลบรารีจากcom.sun.* . นอกจากนี้ยังจะทำให้เกิดปัญหานี้

โปรแกรมจะทำงานเมื่อรันใน ide ทำให้คลาสเหล่านี้com.sun.*อยู่ในjre/libไดเร็กทอรีทั้งหมดจะถูกโหลดเมื่อรัน แต่เมื่อคุณเรียกใช้mvn packageไลบรารีเหล่านี้จะไม่สามารถเข้าถึงได้เนื่องจากข้อ จำกัด ของ oracle ตั้งแต่ java 1.6 (ไลบรารีเหล่านี้เลิกใช้แล้ว) ในการแก้ปัญหานี้คุณสามารถเพิ่ม

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

อย่าลืมแทนที่ cootclasspath ด้วยเส้นทางของคุณเอง rt.jar

คุณสามารถค้นหาAccess restriction: The type XXX is not accessible due to restriction on required libraryรายละเอียดเพิ่มเติม


0

หากมีการกำหนดค่าโมดูลที่ผิดพลาดให้ทำขั้นตอนเหล่านี้:

  • ไปที่การตั้งค่าโครงการ
  • ไปที่โมดูล
  • ลบโมดูลที่ไม่ควรมี

0
  1. จากแท็บ maven คลิก + แล้วเลือก pom.xml
  2. จากแท็บ maven คลิกดาวน์โหลดแหล่งข้อมูลและเอกสารประกอบ
  3. ในโครงสร้างโปรเจ็กต์ (ซึ่งคุณสามารถดูไฟล์โปรเจ็กต์ / ไดเร็กทอรี) คลิกขวาที่โปรเจ็กต์ที่คุณกำลังพยายามสร้างและเลือก Build Module Project Name
  4. จากแท็บ Run- Edit Configurations with + add Application และกรอกข้อมูลในฟิลด์ด้านล่าง: i. คลาสหลัก - เลือกด้วยตนเองจากแท็บโครงการเลือกคลาสหลัก ii ใช้คลาสพา ธ ของโมดูล - เลือกชื่อแอปพลิเคชัน iii ย่อบรรทัดคำสั่ง - ไฟล์ classpath
  5. ตอนนี้เพียงแค่เรียกใช้แอป

0

ในกรณีของฉันปัญหาอยู่ใน Project Java SDK เวอร์ชันอื่น เมื่อฉันสร้างโปรเจ็กต์จากเทอร์มินัล maven ใช้ Java 8 และเมื่อฉันสร้างจาก IDEA ก็ใช้ Java 11

ไปที่ไฟล์> โครงสร้างโครงการ ... และในการตั้งค่าโครงการตั้งค่า Project SDK เป็นเวอร์ชันที่คุณต้องการ


0

สำหรับผมปัญหาคือการที่ผมมีAjc คอมไพเลอร์เลือกในการตั้งค่า IntelliJ Java คอมไพเลอร์ เมื่อฉันเปลี่ยนกลับเป็นJavacทุกอย่างก็ใช้ได้ดี


0

สำหรับฉันใน Mac ฉันแก้ไขได้โดยการลบ Intellij Idea Appication จากคอมพิวเตอร์ของฉันและลบไฟล์แคชใน ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

จากนั้นติดตั้งใหม่เปิดโครงการของฉันและสร้างสำเร็จ!


0

ฉันพบปัญหาเดียวกัน ฉันสามารถรันmvn clean packageคำสั่งในเทอร์มินัลได้สำเร็จ แต่ไม่สามารถรันหรือสร้างจาก IntellJ ได้ ฉันทำสิ่งต่อไปนี้ แต่ทั้งหมดล้มเหลว

  • แคชไม่ถูกต้อง
  • เรียกใช้mvn clean packageหรือmvn clean packageในเทอร์มินัล
  • ทำเครื่องหมายเป็น 'autoload snapshots' ในการกำหนดค่า maven ของ Intellij
  • ทำให้ข้อมูลตรงกันหรือนำเข้าใหม่
  • ลบไฟล์ที่เกี่ยวข้องกับ IntellJ ทั้งหมดเช่น .idea และนำเข้าโครงการอีกครั้ง
  • ลบไฟล์อ้างอิงทั้งหมดแล้วเรียกใช้ mvn clean package
  • สลับเวอร์ชัน Java หรือใช้ Java แบบฝังใน IntellJ
  • วิ่ง mvn idea:idea
  • เปลี่ยน Maven Home
  • ทำเครื่องหมายไดเรกทอรี src เป็นแหล่งที่มาในแท็บโมดูล

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

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