ไม่มีการอ้างอิง Maven ในโปรเจ็กต์ Eclipse


109

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

สิ่งที่น่าตลกคือถ้าฉันเรียกใช้ "แพ็คเกจ mvn" ในคอนโซลหรือในคราสมันจะทำงานได้ดีและยังสร้างสงครามที่มีขวดโหลที่จำเป็นทั้งหมด เฉพาะ Eclipse เท่านั้นที่บ่นว่า "โครงการไม่ได้ถูกสร้างขึ้นเนื่องจากพา ธ การสร้างไม่สมบูรณ์ไม่พบไฟล์คลาสสำหรับ org.slf4j.Logger ... " ถ้าฉันเปรียบเทียบโปรเจ็กต์กับคอมพิวเตอร์เครื่องอื่น ๆ (โดยที่โปรเจ็กต์ทำงานได้ดี) ฉันสังเกตเห็นว่ามีไลบรารีไม่กี่ไลบรารีที่ขาดหายไปภายใต้รายการ "การอ้างอิง Maven" ใน Eclipse แม้ว่าพวกเขาจะอยู่ในสงครามแพ็กเกจและสามารถพบได้ในโฟลเดอร์ที่เก็บข้อมูล

ดังนั้น jar-s มีเพียง Eclipse จะไม่แสดงรายการทั้งหมดภายใต้ "การพึ่งพา Maven" ฉันจะทำอะไรได้บ้าง?

คอมพิวเตอร์กำลังทำงานบน Windows 7 ด้วย 64 บิต java & eclipse


เป็นปัญหาขอบเขตเหมือนในjira.codehaus.org/browse/MNG-2045หรือไม่
VonC

1
การโพสต์คำตอบไม่คุ้มค่า แต่สำหรับใครก็ตามที่อ่านข้อความนี้ในอนาคตดูเหมือนว่าคุณจะต้องพิมพ์อักขระอย่างน้อยสามตัวโดยไม่มีสัญลักษณ์แทน เช่นการพิมพ์ "t" หรือ "to" จะไม่แสดงผลลัพธ์ใด ๆ แต่ "tom" จะ เชื่อหรือไม่ว่าฉันใช้เวลาประมาณหนึ่งชั่วโมงในการค้นหาเหตุผลต่างๆก่อนที่จะตระหนักถึงสิ่งนี้
Chris Neve

คำตอบ:


118

ฉันลองทุกอย่างที่โพสต์ไว้ที่นี่ แต่น่าเสียดายที่มันใช้ได้ผลในกรณีของฉัน ดังนั้นลองใช้ชุดค่าผสมต่างๆที่ฉันได้ออกมาซึ่งช่วยแก้ปัญหาของฉันได้

1) เปิดไฟล์. classpathที่รูทของโปรเจ็กต์ eclipse ของคุณ

2) แทรกรายการต่อไปนี้ในไฟล์:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

จากนั้นสร้างโครงการของคุณใหม่ที่ eclipse (Project-> Clean-Build) ตอนนี้คุณสามารถตรวจสอบได้ที่ Java Build Path ของโปรเจ็กต์ของคุณที่แท็บ Libraries ที่ Maven Dependencies รวมอยู่ด้วย: ป้อนคำอธิบายภาพที่นี่


3
นี่เป็นสิ่งแรกที่ทุกคนควรลอง เปิดไฟล์. classpath ที่จะอยู่ในไดเร็กทอรีโปรเจ็กต์ของคุณด้วย notepad และเพิ่มบรรทัดที่กล่าวถึงและรีเฟรชโปรเจ็กต์ของคุณ
Amit Kumar

9
สิ่งนี้ได้ผลโดยที่ทุกอย่างล้มเหลว แต่ฉันต้องทำทุกโครงการที่ฉันสร้างหรือไม่ ทำไมมันไม่ทำงานโดยอัตโนมัติ? ปัญหาที่แท้จริงคืออะไร?
อือออออ .. แฮมเอฟ

เฮ้อนี่ยังแตกใน m2e 1.6.2.20150902-002 ทดสอบด้วยการติดตั้ง vanilla Eclipse ใหม่บน MacOS X / JDK 1.8 Eclipse IDE สำหรับ Java Developers เวอร์ชัน: Mars.2 Release (4.5.2) Build id: 20160218-0600 ฉันสงสัยว่าปลั๊กอินนี้ต้องการ Eclipse Java EE เพื่อให้ทำงานได้อย่างถูกต้องหรือไม่
Mat Gessel

1
คำตอบนี้ควรเป็นคำตอบแรก หนึ่งเดียวที่ใช้งานได้ ;-) ขอบคุณ
Manuel Manhart

1
มายากล! ยังคงใช้ได้สำหรับ Eclipse 4.4.2
เทียบกับ

91

แก้ไขปัญหา!

ฉันไม่รู้ว่ามันแก้อะไรได้แน่ แต่ฉันทำ 4 อย่างใน Eclipse:

  • หน้าต่าง -> การตั้งค่า: Maven-> การติดตั้ง: การตั้งค่าส่วนกลาง -> เปิดไฟล์และ localRepository แบบฮาร์ดโค้ด
  • โครงการ -> ทำความสะอาด
  • คลิกขวาที่โครงการ: Maven-> อัปเดตการอ้างอิง
  • คลิกขวาที่โครงการ: Maven-> อัปเดตการกำหนดค่าโครงการ

ฉันเดาว่ามันเป็นการพึ่งพาการอัปเดตเนื่องจากหลังจากสองครั้งแรกไม่มีการเปลี่ยนแปลง


2
ฉันรู้จัก "Project-> Clean" และได้ลองใช้แล้ว แต่ในตอนแรกไม่ได้ผล
โฮสต์นิก

7
มันเป็นจุดสุดท้าย อัปเดตการกำหนดค่าโครงการจะเพิ่มไลบรารี "Maven Dependencies" ให้กับโครงการของคุณ
Eduard Wirch

2
FYI ก่อนอื่นฉันต้องคลิกขวาที่โครงการของฉันไปที่กำหนดค่าและ "แปลงเป็นโครงการ Maven"
ดูมา

2
เมื่อขยายคำตอบของ Eduard Wirch ฉันยังต้องทำเครื่องหมายที่ช่อง "Force Update of Snapshots / Releases" ที่หน้าต่าง Maven-> Update Project ... อาร์ติแฟกต์ที่หายไปของฉันคือสแนปชอตและยังอัปเดตได้ไม่ดีหากไม่มีการบังคับ
evaldeslacasa

1
ฉันต้องเปลี่ยนการตั้งค่าผู้ใช้ 'settings.xml' ให้เป็นหนึ่งในไดเร็กทอรี ".m2" ของฉัน ก่อนหน้านี้ถูกตั้งค่าเป็นหนึ่งภายใต้ Maven install dir
Jack Straw

35

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

คุณควรตรวจสอบว่ามีการดาวน์โหลดไฟล์อ้างอิงของคุณจริงหรือไม่โดยไปที่บรรทัดคำสั่งแล้วพิมพ์

mvn dependency:tree

หากคุณเห็นแพ็คเกจของคุณที่นั่น แต่ Eclipse ไม่รับทราบสิ่งที่เหมาะกับฉัน (บางครั้ง) คือไปที่เทอร์มินัล cd ลงในโฟลเดอร์โครงการแล้วพิมพ์

mvn eclipse:clean แล้ว mvn eclipse:eclipse

สุดท้ายรีเฟรชโปรเจ็กต์ใน eclipse

ฉันไม่รู้ว่าทำไมถึงได้ผลและบางครั้งก็ใช้ไม่ได้สักครั้งแล้วทำอีกครั้งก็ได้ผล ... คุ้มค่าที่จะลอง!


สิ่งนี้ชี้ให้ฉันไปในทิศทางที่ถูกต้องโดยแสดงให้ฉันเห็นว่ามีปัญหากับไฟล์ settings.xml ของฉัน! ขอบคุณ @rogueleaderr!
slashp

ใช่มันได้ผลสำหรับเพื่อนของฉันแก้ปัญหาและปวดหัวของเธอทั้งหมด น่าเสียดายที่ไม่ได้ผลสำหรับฉัน
Zack Zilic

มันได้ผลสำหรับฉันด้วย แต่มีใครอธิบายได้ไหมว่าเบื้องหลังเกิดอะไรขึ้น ??
YouAreAwesome

ทำงานให้ฉัน การแก้ไขที่สมบูรณ์แบบ
Ramaraj Karuppusamy

31

โครงการของฉันเพิ่งถูกทำให้เสียหาย นี่คือวิธีที่ฉันแก้ไขสำหรับ Eclipse Indigo x64 (J2EE 3.7.3):

  1. ลบไฟล์ POM ของฉัน (สำรองแน่นอน)
  2. โครงการบริบทเมนู > Maven > ปิดการใช้งาน Maven ธรรมชาติ
  3. ลบโปรเจ็กต์ (แต่ไม่ใช่เนื้อหาบนดิสก์)
  4. Re-นำเข้าเป็นนำเข้า > ทั่วไป > โครงการที่มีอยู่
  5. โครงการบริบทเมนู > การตั้งค่าคอนฟิก > แปลงโครงการ Maven ...
  6. ยอมรับค่าเริ่มต้นจากตัวช่วยสร้าง Maven
  7. เขียนทับ POM ด้วย POM ที่สำรองไว้ (ตอนนี้คุณมีโฟลเดอร์ Maven Dependencies )
  8. Maven Update / Clean เพื่อการวัดที่ดี

หวังว่าจะช่วยใครบางคน :)


สิ่งนี้ช่วยฉันได้! ฉันไม่รู้ว่ามีอะไรผิดปกติ แต่ฉันใช้ Juno / Springsource 3 แบบ 64 บิตและไม่สามารถนำเข้าโครงการ Maven ได้อย่างถูกต้อง หากฉันตรวจสอบเป็นโครงการปกติให้เปลี่ยนชื่อ POM ของฉันจากนั้นทำตามคำแนะนำของคุณตั้งแต่ขั้นตอนที่ 5 เป็นต้นไปก็ใช้ได้ มิฉะนั้นฉันจะไม่พยายามอะไรเลยที่จะเพิ่มการอ้างอิง Maven ลงในโครงการของฉันนอกเหนือจากบรรทัดคำสั่งmvn eclipse:eclipseซึ่งแย่มาก
ngreen

ฉันทำสิ่งนี้แล้วแต่ฉันยังไม่มีโฟลเดอร์การอ้างอิง maven นี่คือไฟล์ pom.xml ของฉันและฉันคิดว่าเป็นสาเหตุที่ทำให้ฉันมีปัญหานี้: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>antlr.tuto.calco</groupId> <artifactId>CalculatriceAntlr</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
Anatch

ฉันไม่รู้จริงๆว่าปัญหาอยู่ที่ไหน แต่ฉันได้ทำตามขั้นตอนข้างต้นแล้วและมันใช้งานได้ดีจริงๆ ทำให้เกิดข้อผิดพลาดเช่น class not found, xml dtd not found แต่ตอนนี้คลี่คลายแล้ว. ขอบคุณเพื่อน. โหวตขึ้น
Sagar007

31

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

SOLUTION: ในโครงการที่สร้างไม่ถูกต้อง

  • คลิกขวาที่โครงการแล้วเลือกคุณสมบัติจากนั้นเลือก Maven

  • ยกเลิกการเลือกช่องที่มีข้อความ " แก้ไขการอ้างอิงจากโปรเจ็กต์ Workspace "

  • กดใช้แล้วตกลง

  • คลิกขวาอีกครั้งในโครงการของคุณและทำ Maven-> Update Snapshots (หรือ Update Dependencies)

และข้อผิดพลาดของคุณควรหายไปเมื่อโครงการของคุณสร้างใหม่ (โดยอัตโนมัติหากคุณเปิดใช้งานการสร้างอัตโนมัติ)


ขอบคุณที่แก้ไขปัญหาของฉัน ดูเหมือนจะชี้ให้เห็นว่าเป็นบั๊ก Eclipse
Scott McIntyre

1
เฮ้ไม่มีสิ่งที่เรียกว่า Maven-> Update Snapshots (หรือ Update Dependencies) ถ้าไปคลิกขวาไม่มีตัวเลือก Maven? สิ่งที่คุณอธิบายอยู่ที่ไหน? ฉันกำลังมองหา แต่ไม่พบคำอธิบายหลังจากที่คุณกด Apply
DarioBB

1
@DarioBB คำตอบนี้เกือบ 5 ปี ฉันไม่ได้ทำงานใน Eclipse มานานกว่าหนึ่งปีแล้ว ฉันไม่รู้ว่าตัวเลือกนี้ยังสามารถใช้ได้หรือไม่ ฉันอาจไม่ได้อยู่ในเวอร์ชันล่าสุด
IceBox13

2
วิธีนี้ใช้ได้ผลสำหรับฉันใน Eclipse neon ทำ Maven> Update Project (ไม่ใช่ Update Snapshots) ในภายหลัง
Ivana

10

ฉันลองทุกอย่างที่โพสต์ไว้ที่นี่ แต่น่าเสียดายที่มันใช้ได้ผลในกรณีของฉัน ดังนั้นลองใช้ชุดค่าผสมต่างๆที่ฉันได้ออกมาซึ่งช่วยแก้ปัญหาของฉันได้

1) เปิดไฟล์. classpathที่รูทของโปรเจ็กต์ eclipse ของคุณ

2) แทรกรายการต่อไปนี้ในไฟล์:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

จากนั้นสร้างโครงการของคุณใหม่ที่ eclipse (Project-> Clean-Build)


ขอบคุณ! โซลูชันนี้ได้ผลดีที่สุดสำหรับฉันการแก้ไขเพียงครั้งเดียวทำได้ยากฉันต้องปิดและเปิดโครงการอีกครั้ง
Tarun Gupta

ยอดเยี่ยม. สิ่งนี้ได้ผลสำหรับฉันเช่นกัน ในโครงการของฉันฉันไม่เห็นการพึ่งพา maven ตอนนี้สามารถมองเห็นได้และเพิ่มไปยัง build-path เช่นกัน ขอบคุณ!
Tahir Mehmood

7

ในกรณีที่มีใครลองใช้ตัวเลือกอื่น ๆ ทั้งหมดแล้วและคุณยังติดขัดให้ลองคลิกขวาที่โฟลเดอร์โครงการตรงไปที่ตัวเลือก Maven แล้วคลิกปุ่ม "เพิ่มการอ้างอิง" ด้วยเหตุผลบางประการ Eclipse ไม่อัปเดตการอ้างอิงด้วยตนเองจากpom.xmlในตอนแรกให้ลอง

ภาพหน้าจอของการเลือกเมนู


5

ฉันมีปัญหาที่คล้ายกัน ฉันจะแก้ไขมันโดยใช้Maven-> อัปเดตการตั้งค่าคอนฟิกโครงการการดำเนินการ


5

สำหรับฉันปัญหาคือ maven ไม่พบไฟล์settings.xmlซึ่งอยู่ในmyMavenFolder \ conf myMavenFolder

สิ่งที่ฉันทำเพื่อแก้ไขปัญหาคือการเลือกตำแหน่งที่ถูกต้องของไฟล์ settings.xml จาก eclipse:
Window -> Preferences -> Maven -> User Settings

สุดท้ายกดใช้และอัปเดตโครงการของคุณ


4

ดังนั้นฉันจึงไปงานปาร์ตี้นี้ช้าไปประมาณ 4 หรือ 5 ปี แต่ฉันมีปัญหานี้หลังจากดึงจาก repo ของเราและไม่มีวิธีแก้ปัญหาอื่นใดจากเธรดนี้ในกรณีของฉันเพื่อกำจัดคำเตือน / ข้อผิดพลาดเหล่านี้

สิ่งนี้ใช้ได้ผลสำหรับฉัน:

จาก Eclipse ไปที่ Window -> Preferences -> Maven (ขยาย) -> ข้อผิดพลาด / คำเตือน ตัวเลือกสุดท้ายจะอ่าน "การเรียกใช้ปลั๊กอินที่ไม่ครอบคลุมโดยการกำหนดค่าวงจรการใช้งาน" - ใช้เมนูแบบเลื่อนลงสำหรับตัวเลือกนี้และสลับ "ละเว้น" จากนั้นใช้จากนั้นตกลง (ที่ "ต้องอัปเดตโครงการ Maven" ให้พูดว่าตกลง)

ข้อมูลเพิ่มเติม:

สิ่งนี้อาจไม่จำเป็นต้อง "แก้ไข" ปัญหาพื้นฐานและบางส่วนอาจไม่ถือเป็น "แนวทางปฏิบัติที่ดีที่สุด" อย่างไรก็ตามควรลบ / ระงับคำเตือนเหล่านี้ไม่ให้ปรากฏใน Eclipse และให้คุณก้าวไปข้างหน้าอย่างน้อยที่สุด โดยเฉพาะ - ฉันกำลังทำงานกับ Eclipse Luna Service Release 1 (4.4.1) ที่ติดตั้ง Spring Dashboard & Spring IDE Core (3.6.3) และ m2e (1.5) ซึ่งทำงานบน Arch Linux และ OpenJDK 1.7 ฉันนำเข้าโครงการของฉันเป็นโครงการ maven ที่มีอยู่และเลือกตกลงเมื่อได้รับคำเตือนเกี่ยวกับคำเตือน / ข้อผิดพลาดที่มีอยู่ (เพื่อจัดการกับพวกเขาในภายหลัง)

ระงับ / ลบคำเตือน "Plugin Execution not covered ... " Eclipse-Maven

(ขออภัยฉันไม่ใช่คนออกแบบ แต่เพิ่มรูปภาพเพื่อความชัดเจน)


4

สำหรับขั้นตอนต่อไปนี้ใช้ได้ผลในกรณีของฉัน:

1 ในคราสคลิกขวาที่โครงการที่ต้องการMaven -> ปิดการใช้งาน Maven Nature

2 คลิกขวาอีกครั้งจากนั้นไปที่Properties Propertiesลบหลักฐานทั้งหมดของการพึ่งพา Maven ภายนอกเหลือเพียง JRE System Library

3คลิกขวาอีกครั้งบนโปรเจ็กต์จากนั้นไปที่Configure -> Convert to Maven Project


3

วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉันดังนั้นคำตอบนี้เหมาะสำหรับคนอื่นในสถานการณ์ของฉัน ในที่สุดฉันก็พบปัญหาด้วยตัวเองและวิธีแก้ปัญหาอื่น ไฟล์ pom.xml มีแท็ก dependencyManagement ที่รวมการอ้างอิงและ M2Eclipse จะไม่เพิ่มโฟลเดอร์ Maven Dependencies เมื่อมีอยู่ ดังนั้นฉันจึงลบแท็กนี้ออกจากนั้นดำเนินการแก้ปัญหาที่เสนอโดย Ualter Jr. และ Eclipse ก็เพิ่มโฟลเดอร์ที่หายไปทันที!


3

นี่คือขั้นตอนที่ฉันทำตาม
1. ลบโครงการ maven จากคราส
2. ลบไฟล์ทั้งหมด (.setting / .classpath / target) นอกเหนือจากsrcและ pom จากโฟลเดอร์ต้นทางของฉัน
3. นำเข้าอีกครั้งเป็นโครงการ maven
4. สร้างอีกครั้งคุณควรจะเห็นการอ้างอิงของ maven


2

คำตอบของฉันคล้ายกับ @JerylCook: ค้นหา.classpathไฟล์อื่นในโครงการ Maven ที่ใช้งานได้แก้ไขไฟล์ที่ไม่ดีของคุณเป็นไฟล์ที่ทำงานได้ดี ที่สำคัญคือการเพิ่ม

<attributes>
    <attribute name="maven.pomderived" value="true"/>
</attributes>

ในทุก<classpathentry>ประเภทconและsrc. อย่าลืมเปลี่ยน<classpathentry .... />เป็น<classpathentry ...>xxx</classpathentry> .

ในที่สุดอัปเดตโครงการ maven และติดตั้ง / สร้างใหม่ใน maven


สิ่งนี้ทำเพื่อฉัน ขอบคุณ.
NuCradle

1

หากคุณมีข้อผิดพลาด "เส้นทางที่ซ้อนกัน" หลังจากดำเนินการ Maven -> อัปเดตการกำหนดค่าโครงการ (หรือใน Juno คือ "Update Configuration ... ") แสดงว่าเส้นทางการสร้างของคุณถูกกำหนดค่าไม่ถูกต้อง

คลิกขวาที่โปรเจ็กต์ -> Build Path -> Configure Build Path

ตรวจสอบให้แน่ใจว่ามีเฉพาะ '/ src' และไดเร็กทอรีในระดับนั้นเท่านั้น หากคุณมีเช่น '/ src' และ '/ src / main / resources' แสดงว่าไม่ถูกต้อง ทรัพยากรที่สอง ('/ src / main / resources') ถูก "ซ้อน" ภายใต้รายการแรก ('/ src') ซึ่งทำให้คุณไม่สามารถอิมพอร์ตรีซอร์สได้เนื่องจากจะป้องกันไม่ให้ eclipse เห็นการขึ้นต่อกันของ maven


1

ปัญหาของฉันดูเหมือนจะคล้ายกันดังนั้นฉันจะเพิ่มในการสนทนา ฉันได้ยกเลิกการนำเข้าโครงการ maven ที่มีอยู่ใน Eclipse ซึ่งส่งผลให้ไม่ได้รับอนุญาตให้อัปเดตและไม่สามารถสร้าง Work Space ให้เสร็จได้อย่างถูกต้อง

สิ่งที่ฉันต้องทำเพื่อแก้ไขคือเลือกRun As... -> Maven build...และภายใต้เป้าหมายที่ฉันป้อนdependency:go-offlineและดำเนินการนั้น

จากนั้นฉันคลิกขวาที่โปรเจ็กต์และเลือกMaven -> Update Project...และอัปเดตโปรเจ็กต์นั้น

ในที่สุดก็อนุญาตให้สร้างโฟลเดอร์ซอร์สและนำเข้าให้เสร็จสิ้น


1

ฉันสามารถแก้ไขข้อผิดพลาดโดย 1) คลิกขวา (โครงการ maven ของคุณ) -> maven -> maven install

หลังจากติดตั้งสำเร็จ

2) คลิกขวา (โครงการ maven ของคุณ) -> maven -> อัปเดตโครงการ และข้อผิดพลาดทั้งหมดของ maven ได้รับการแก้ไขแล้ว!


1

สำหรับฉันมันเพียงพอแล้วที่จะเพิ่ม buildCommand (org.eclipse.m2e.core.maven2Builder) และ nature (org.eclipse.m2e.core.maven2Nature) ในไฟล์. project เช่นนี้:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>iText</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

และฉันก็มี ป้อนคำอธิบายภาพที่นี่


1

นี่คือวิธีที่ฉันแก้ไข

  • Window-> Preferences: Maven-> User Settings (คลิกที่ "open file" ในหน้าต่างผลลัพธ์หรือเพียงแค่แก้ไข settings.xml ด้วยโปรแกรมแก้ไขข้อความภายนอกเช่น Notepad) ตรวจสอบว่า localRepository (ซึ่งแสดงในหน้าต่างนี้) ถูกต้อง ฉันพิมพ์ผิดในไฟล์
  • เมื่อคุณแก้ไข settings.xml แล้วให้คลิกที่ Update Settings ซึ่งอยู่ในหน้าจอ Preferences-> Maven-> User Settings เดียวกัน

ตอนนี้สร้างใหม่และจะติดตั้ง JAR ล่าสุดในตำแหน่งที่ถูกต้อง


1

ฉันมีปัญหาที่คล้ายกันและได้ลองใช้คำตอบทั้งหมดในโพสต์นี้แล้ว สิ่งที่ใกล้เคียงที่สุดที่ฉันได้พบในการแก้ไขปัญหานี้คือการรวมโซลูชันของ Joseph Lust และ Paul Crease เข้าด้วยกัน ฉันเพิ่มไฟล์ pom.xml ที่สำรองไว้หลังจากลบและนำเข้าโปรเจ็กต์อีกครั้งและไม่มีอะไรปรากฏขึ้นจนกว่าฉันจะลบแท็กการจัดการการพึ่งพาใน pom.xml และโฟลเดอร์การอ้างอิงก็อยู่ที่นั่นอย่างน่าอัศจรรย์

อย่างไรก็ตามมันทำให้ POM ของลูกแตกเนื่องจากพวกเขาต้องการการจัดการการพึ่งพา pom.xml หลักในการทำงานและด้วยเหตุนี้ MVN ของฉันจึงทำงานไม่ถูกต้องในโปรเจ็กต์ทั้งจาก Eclipse หรือบรรทัดคำสั่งทำให้เกิดข้อผิดพลาด pom.xml เสีย

วิธีสุดท้ายหากทุกอย่างล้มเหลวคือการนำเข้าไฟล์. jar ที่โปรเจ็กต์ของคุณต้องการด้วยตนเอง คลิกขวาที่ project Properties -> Java Build Path -> Libraries and Add external Jar

หาก MVN ของคุณทำงานอย่างถูกต้องจากบรรทัดคำสั่งและคุณได้สร้างโครงการสำเร็จแล้วคุณจะมีที่เก็บข้อมูลทั้งหมดที่จำเป็นในโฟลเดอร์. m2 / repository ของคุณ เพิ่ม jar ภายนอกทั้งหมดที่กล่าวถึงในแท็กการอ้างอิงของ pom.xml และคุณจะเห็นส่วนไลบรารีที่อ้างอิงใน Eclipse ของคุณโดยที่ข้อผิดพลาดสีแดงที่น่ารำคาญทั้งหมดหายไป

นี่ไม่ใช่โซลูชันที่ดีที่สุด แต่จะช่วยให้คุณทำงานใน Eclipse ได้โดยไม่มีข้อผิดพลาดจากการอ้างอิงที่ขาดหายไปและยังช่วยให้คุณสร้างโครงการ Maven ได้ทั้งจาก Eclipse และบรรทัดคำสั่ง


1

ปัญหาเดียวกันนี้เกิดขึ้นกับฉันและเป็นเพราะมีข้อผิดพลาดในการดาวน์โหลด jar เนื่องจากปัญหา repo ซึ่งระบุด้วยธงสีแดงในไฟล์pom.xml.

ฉันเพิ่มที่เก็บอื่นดังนั้นแฟล็กสีแดงในpom.xmlหายไปและ Eclipse ก็โหลด pom อีกครั้งแก้ไขปัญหาและแสดงรายการการอ้างอิง maven ใน Project Explorer ฟังดูง่ายและชัดเจนในการแก้ไขปัญหาที่มองเห็นได้ แต่เนื่องจาก Eclipse ค่อนข้างพอใจที่จะเรียกใช้ maven และสร้างสำเร็จจึงไม่เห็นได้ชัดว่าธงสีแดงและปัญหา repo อยู่ที่ต้นตอของความไม่เต็มใจที่จะแยกวิเคราะห์ pom และแสดงรายการ maven การพึ่งพา



1

อัปเดต. classpath ด้านล่างจะใช้งานได้ทุกครั้ง

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

1

Maven Dependencies: อะไรแก้ไขให้ฉันใน Eclipse? ฉันเพิ่มการอ้างอิงในไฟล์ "pom" ฉันสร้าง แต่ไม่เห็น Maven Dependency ใน Eclipse ขั้นตอนต่อไป: ปิดโครงการ จากนั้นเปิดโครงการอีกครั้ง ฉันสามารถเห็นการอ้างอิงของ Maven


1

ฉันได้รับข้อผิดพลาดนี้เมื่อมีข้อผิดพลาดใน Pom

  1. รัน mvn eclipse: คำสั่ง eclipse บนคอนโซลเพื่อตรวจสอบว่า pom สามารถแยกวิเคราะห์ได้หรือไม่
  2. หากไม่สามารถแยกวิเคราะห์ได้ให้ค้นหาข้อผิดพลาด

ฉันทำงานภายใต้ cygwin ฉันสังเกตเห็นว่ามีเพียงโปรเจ็กต์นี้เท่านั้นที่ไม่ได้สร้างภายใต้อุปราคาแม้ว่าฉันจะสร้างสำเร็จ (พร้อม mvn) ในบรรทัดคำสั่ง หลังจากรันmvn eclipse:eclipseการอ้างอิงทั้งหมดถูกเพิ่มเข้ากับคลาสพา ธ ในโปรเจ็กต์ eclipse และโปรเจ็กต์ก็ดูดี ++
Bill Naylor

0

มันน่าทึ่งมากที่ปัญหานี้มีสาเหตุและวิธีแก้ไขที่แตกต่างกันมากมาย ฉันพบวิธีแก้ปัญหาอื่นที่เหมาะกับฉัน

มันไม่ใช่วิธีแก้ปัญหามากนัก แต่เป็นการค้นพบ: ฉันเห็นโหนด Maven Dependencies ใน Package Explorer ซึ่งเป็นค่าเริ่มต้นสำหรับมุมมอง Java แต่ฉันไม่สามารถมองเห็นได้ในมุมมอง Java EE ซึ่งใช้ Project Explorer โดยค่าเริ่มต้น. นักสำรวจทั้งสองคนนั้นดูคล้ายกันมากเมื่อมองอย่างรวดเร็วดังนั้นคุณอาจคาดหวังว่าจะได้เห็นการพึ่งพา Maven ทั้งสองอย่าง

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


0

โครงการทั้งหมดดูแปลก ๆ ในคราสโฟลเดอร์การอ้างอิง maven หายไปมันแสดงบางประเภทที่ไม่รู้จัก แต่ฉันสามารถสร้างได้สำเร็จใน maven สิ่งที่แก้ไขปัญหาของฉันคือการเพิ่มโฟลเดอร์ gen ไปยังเส้นทางต้นทางบนเส้นทางการสร้างโครงการ

อาจคล้ายกับAndroid / FBReaderJ / gen นี้ที่มีอยู่แล้ว แต่ไม่ใช่โฟลเดอร์ต้นทาง แปลงเป็นโฟลเดอร์ต้นทางหรือเปลี่ยนชื่อ


0

ใน Eclipse STS หาก "Maven Dependencies" หายไปคุณต้องตรวจสอบและแก้ไขpom.xmlไฟล์. ฉันทำสิ่งนี้ (สองครั้ง) และฉันก็แก้ไขได้ ไม่ใช่ปัญหาการอ้างอิง แต่สตริงที่สร้างและย้ายในตำแหน่งแบบสุ่มในpom.xmlไฟล์.


0

ทั้งหมดข้างต้นไม่ได้ผลกับฉัน สำหรับการแก้ไขคือการลบโฟลเดอร์ที่เก็บภายใต้. m2 จากนั้นทำการอัพเดต maven จาก eclipse


0

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

ตัวอย่าง:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

นี่เป็นเพียงการกำหนดการพึ่งพาสำหรับสิ่งนี้และโครงการย่อยทั้งหมดด้วยเวอร์ชันที่ต้องการ! นี่คือสิ่งที่ควรมีลักษณะเช่นใน master-POM ในการใช้ lib ในโปรเจ็กต์ปัจจุบันนี้จริงๆคุณได้เพิ่ม Depency ดังต่อไปนี้:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>
</dependencies>

ตอนนี้จะให้ lib ในโครงการปัจจุบันนี้

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