ข้อผิดพลาด Maven: ไม่พบหรือโหลดคลาสหลัก org.codehaus.plexus.classworlds.launcher.Launcher


138

ฉันได้ติดตั้งล่าสุดmaven-3.0.4บนWindows 7 :
รายละเอียดการติดตั้งมีดังนี้:
เส้นทางการติดตั้ง:

C:\apache-maven-3.0.4  

ตัวแปรสภาพแวดล้อม ได้แก่

M2_HOME C:\apache-maven-3.0.4\apache-maven\src  
JAVA_HOME C:\Program Files\Java\jdk-1.7.0_04  

ตัวแปรเส้นทางที่เพิ่ม ได้แก่ :

%M2_HOME%\bin;%JAVA_HOME%\bin;

ในหน้าต่างคำสั่งจะแสดงดังนี้:

C:\>java -version  
java version "1.7.0_04"  
Java(TM) SE Runtime Environment (build 1.7.0_04-b22)  
Java HotSpot(TM) Client VM (build 23.0-b21, mixed mode, sharing)  
C:\>mvn -version  
Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher  

นี่เป็นเวอร์ชันเดียวบน maven ที่ติดตั้งบนพีซีของฉันและโซลูชันที่ให้ไว้ในหลาย ๆ บล็อกที่อ้างถึงการลบM2_HOMEตัวแปรสภาพแวดล้อมก่อนหน้านี้ไม่ถูกต้อง

ฉันได้อ่านและลองใช้วิธีแก้ปัญหาทั้งหมดที่ให้ไว้ในบล็อกเช่น:

แต่ยังไม่สามารถเข้าถึงได้ สิ่งที่ฉันอาจขาดหายไปในเรื่องทั้งหมดนี้? ขอบคุณล่วงหน้า.


4
เพิ่งดาวน์โหลดไบนารี zipและมันเสีย แทนที่ด้วย.tar.gzและใช้งานได้ ดังนั้นเมื่อM2_HOMEตั้งค่าถูกต้องจริงๆลองตรวจสอบว่าสิ่งที่คุณดาวน์โหลดมานั้นถูกต้อง
Pavel Horal

@PavelHoral เหมือนกันเกิดขึ้นกับฉัน
hoaphumanoid

ฉันได้รับข้อผิดพลาดนี้ในเจนกินส์เท่านั้นผ่านคำสั่งเช่น mvn compile ทำงานได้ดี!
Nullpointer

คำตอบ:


141

ฉันตีปัญหานี้มากเกินไปและพบนี้บทความ สำหรับ Maven3 การเปลี่ยนชื่อตัวแปรสภาพแวดล้อมของฉันจาก M2_HOME เป็น M3_HOME ทำเคล็ดลับ ฉันใช้ Mac ที่ใช้ OSX 10.9 กับ JDK 1.7 หวังว่านี่จะช่วยได้

หมายเหตุ: โปรดลบ M2_HOME หากตั้งค่าไว้แล้ว เช่น:unset M2_HOME


26
เหมือนกันสำหรับฉันบน Mac อย่าลืมลบ M2_HOME
Luke

ทำงานร่วมกับ Maven 3.3.3 ไบนารีบน Ubuntu ไม่ได้ตั้งค่า JAVA_HOME
TFuto

2
สิ่งนี้ใช้งานได้กับ Mac OS 10.10.5 ที่มีการติดตั้ง maven (3.3.3)
Jeremiah

@ ลุคขอบคุณ! unset M2_HOME.
Jared Burrows

5
วิธีนี้ใช้ได้ผล แต่ไม่ใช่ด้วยเหตุผลที่คุณคิด ปัญหาตามที่ระบุไว้ในความคิดเห็นบางส่วนของบทความที่อ้างถึงไม่ใช่ว่าต้องการ M3_HOME แทน แต่เป็นการกำหนด M2_HOME ไม่ถูกต้อง ดูเหมือนว่าไม่ได้ใช้ M3_HOME เลยดังนั้นโดยพื้นฐานแล้วสิ่งที่เกิดขึ้นคือค่าเริ่มต้นจะถูกใช้เมื่อคุณลบ M2_HOME
Matt

66

แม้ว่าคำถามจะได้รับคำตอบ แต่ฉันต้องการเพิ่มว่าหากคุณได้รับข้อผิดพลาดดังกล่าวข้างต้นตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดไฟล์ไบนารีแล้ว

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

ฉันมีคนส่วนหนึ่งที่ดาวน์โหลดไฟล์ผิดรุ่นพี่และรุ่นน้อง


1
จริงๆแล้วฉันดาวน์โหลดซอร์สตามวัตถุประสงค์เนื่องจากเป็นวิธีดั้งเดิมในการทำสิ่งต่างๆ แต่ฉันทำตามคำแนะนำสำหรับการติดตั้งไบนารีโดยบังเอิญ เพียงแค่คัดลอก binary tar ลงไปก็ง่ายกว่าในระยะยาว
MDMoore313

+1: สิ่งเดียวกันเกิดขึ้นที่นี่ - บังเอิญคลิกที่ลิงค์ดาวน์โหลดผิด ไม่ใช่ว่าฉันมีไฟล์ zip ที่ถูกต้อง!
Laura Ritchey

สิ่งนี้แก้ไขปัญหาให้ฉันด้วยตัวคนเดียว - ขอบคุณ!
Liran H

จริง. ดาวน์โหลดไฟล์ต้นฉบับและพยายามอัปเดต M3_HOME แต่ไม่ได้ผล ไบนารีทำงานได้ดี
Rohit

1
เพิ่งมีสิ่งนี้เกิดขึ้นกับฉัน เว็บไซต์ไม่ชัดเจนว่าจะใช้
frodo2975

60

ฉันประสบปัญหาเดียวกันนี้และสามารถแก้ไขได้โดยการทำซ้ำตัวแปรสภาพแวดล้อมอย่างระมัดระวัง:

  • M2_HOME
  • M2
  • JAVA_HOME

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

echo %Path%

ตรวจสอบให้แน่ใจว่าคุณสามารถเห็นตัวแปร% M2% และ% JAVA_HOME% ที่ขยายอย่างสมบูรณ์นั่นคือ:

C:\Users\afairchild>echo %Path%
C:\Program Files\Apache Software Foundation\apache-maven-3.0.4\bin;C:\Program Files\Java\jdk1.7.0_09\bin; [etc]

M2_HOME เป็นสิ่งแรกในการตรวจสอบว่าคุณกำลังอัพเกรดหรือไม่ JAVA_HOME ควรจะไม่เปลี่ยนแปลง
Joe Leo

3
วิธีการคือM2ตัวแปรสภาพแวดล้อมการใช้งานอย่างไร ฉันมีเพียงJAVA_HOMEและM2_HOME.
Kevin Meredith

1
@KevinMeredith: M2บางครั้งตัวแปรสภาพแวดล้อมถูกใช้เพื่อระบุ%M2_HOME\bin%เส้นทางซึ่งจะถูกเพิ่มเข้าไปใน%Path%ตัวแปรสภาพแวดล้อม สิ่งนี้จำเป็นเมื่อmvn.batไม่พบไฟล์แบตช์ Maven ใน%Path%รายการมาตรฐานที่กำหนดไว้ กรณีการใช้งานทั่วไปจะเป็นไดเร็กทอรีการติดตั้งที่ไม่ได้มาตรฐานสำหรับ Maven
Moreaki

@ Alex ฉันได้รับข้อผิดพลาดนี้ในเจนกินส์นี้เท่านั้นผ่านคำสั่งเช่น mvn compile ทำงานได้ดี!
Nullpointer

51

มีปัญหานี้ในการติดตั้ง Ubuntu 12.04 สองรายการที่แตกต่างกันแม้ว่าการติดตั้งจะทำโดย apt-get ก็ตาม ปัญหาคือ M2_HOME

แก้ไขด้วย:

export M2_HOME=/usr/share/maven

2
มันใช้ได้สำหรับฉัน แต่กับ M2_HOME = / usr / share / maven2 (ในกรณีที่มีคนอื่นลอง) ขอบคุณ!
jimkont

1
บน Ubuntu ดีสร้าง /etc/profile.d/maven.sh export M2_HOME=/usr/share/mavenกับคำสั่งที่คุณชี้: ตามที่ @jimkont ชี้ไว้บางครั้งก็เป็น maven2 หรือ maven3 (แน่นอนว่าถ้าคุณติดตั้ง maven3)
Rael Gugelmin Cunha

มันได้ผล. ขอบคุณ. แต่เราสามารถเพิ่มลงในไฟล์ / etc / environtment ได้หรือไม่?
karthik

37

ฉันเชื่อว่าข้อผิดพลาดนี้เกิดจากการดาวน์โหลด SRC แทนที่จะเป็น BINARY จากไซต์ Maven โปรดอย่าลืมดาวน์โหลด Binary zip

เนื่องจากเส้นทางด้านล่างคุณจะได้รับเมื่อคุณดาวน์โหลด SRC เท่านั้น:

M2_HOME C: \ apache-maven-3.0.4 \ apache-maven \ src

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


สิ่งนี้ได้ผลสำหรับฉัน ทำตามคำแนะนำที่นี่: maven.apache.org/install.htmlและตั้งค่าตัวแปร PATH ระบบของคุณด้วย C: \ apache-maven-3.6.3 \ bin
ChrisE

21

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


ขอบคุณที่แก้ไขฉันด้วย อย่างไรก็ตามเหตุใดคุณจึงไม่สามารถใช้การดาวน์โหลด src ได้ตราบเท่าที่มี execuatable ใน bin dir
java123999

13

ฉันมีปัญหานี้และหลังจากเห็นโพสต์นี้และโดยเฉพาะคำตอบ khmarbaise ฉันสังเกตเห็นว่านั่นM2_HOMEคือ

D:\workspace\apache-maven-3.1.0-bin\apache-maven-3.1.0\bin

แล้วฉันก็ไล่มันไป

D:\workspace\apache-maven-3.1.0-bin\apache-maven-3.1.0

ฉันอยากจะบอกว่าฉันใช้ windows 7 (x64)


ฉันได้รับข้อผิดพลาดนี้ในเจนกินส์เท่านั้นผ่านคำสั่งเช่น mvn compile ทำงานได้ดี!
Nullpointer

6

วิธีแก้ปัญหาสำหรับ Maven เวอร์ชันที่ใหม่กว่านั้นตรงไปตรงมา ฉันใช้ OS X ElCap, 10.11.6 และอัปเกรดเป็น Maven 3.3.9 ฉันมีปัญหาเดียวกันกับข้อผิดพลาด " Could not find ...org.codehaus.plexus..." ลิงก์ที่ให้ไว้ที่นี่เสนอวิธีแก้ปัญหาในความคิดเห็นของ McKamey - เพียงแค่ลบ M2_HOME ( unset M2_HOME) เมื่อฉันลองแล้วทุกอย่างได้ผลตามที่คาดไว้

สิ่งนี้สามารถยืนยันได้โดยไปที่Maven install page: "เพิ่มไดเร็กทอรี bin ของไดเร็กทอรีที่สร้าง apache-maven-3.3.9 ไปยังตัวแปรสภาวะแวดล้อม PATH" - ไม่มีการกล่าวถึง M2_HOME หรือ M3_HOME เลย


4

คุณควรเปลี่ยนตำแหน่งของ M2_HOME ดังต่อไปนี้:

set M2_HOME=C:\apache-maven-3.0.4\apache-maven

นอกจากนี้การติดตั้ง JDK ยังดูเป็น JRE มากกว่า JDK สำหรับ Maven คุณต้องมี JDK ไม่ใช่ JRE


ขอบคุณ แต่ฉันมีทั้ง jdk และ jre คุณจะเห็นว่าฉันให้ JAVA_HOME เป็น C: \ Program Files \ Java \ jdk1.7.0_04 และถ้าฉันให้เส้นทางสำหรับ M2_HOME ที่คุณบอก cmd จะไม่รู้จักคำสั่ง 'mvn' ด้วยซ้ำ
manofsins

คุณเปลี่ยน M2_HOME ตามที่ฉันอธิบายไว้มันจะเพิ่ม% M2_HOME% \ bin ให้กับเส้นทางของคุณซึ่งจำเป็นในการเรียกคำสั่ง mvn
khmarbaise

4

ฉันพบปัญหาที่คล้ายกันใน mac OSX ของฉัน หลังจากลองผิดลองถูกหลายครั้งในที่สุดฉันก็แก้ไขได้

ของฉันเป็น~/.bash_profileแบบนี้

export M2_HOME=/Users/xyz/maven-3.x/bin
export PATH=$PATH:$M2_HOME

และเมื่อฉันพยายามecho M2_HOMEจากเทอร์มินัลมันแสดงให้ฉันเห็นเส้นทางที่ถูกต้อง แต่เมื่อฉันพยายามยิงคำสั่ง maven ใด ๆ เช่นmvn cleanหรือmvn installมันมักจะให้ปัญหาเดียวกัน

ไม่พบหรือโหลดคลาสหลัก org.codehaus.plexus.classworlds.launcher.Launcher

ฉันแก้ไขปัญหานี้โดยเปลี่ยนM2_HOMEเป็นสิ่งนี้

export M2_HOME=/Users/xyz/maven-3.x
export PATH=$PATH:$M2_HOME/bin

และ voila! มันเริ่มทำงาน! เพียงแค่ย้ายตำแหน่ง/binจาก M2_HOME ไปที่ด้านหน้าของไฟล์PATH


3

ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดไฟล์ zip แบบไบนารี (apache-maven-3.5.0-bin.zip) แทนไฟล์ Source zip จากนั้นเพิ่มไดเร็กทอรี bin ของไดเร็กทอรีที่สร้าง apache-maven-3.5.0 เข้ากับตัวแปรสภาวะแวดล้อม PATH


3

สำหรับปัญหาการตั้งค่า Maven ส่วนใหญ่เช่น "ไม่พบหรือโหลดคลาสหลัก ... " ให้เริ่มต้นด้วยขั้นตอนด้านล่างเพื่อดูว่าแก้ไขได้หรือไม่:

  • ตรวจสอบให้แน่ใจว่าคุณได้คลายซิปไฟล์เก็บถาวรที่ถูกต้องแล้ว (BINARY archive ไม่ใช่ SOURCE archive)
  • ลบตัวแปรผู้ใช้และระบบทั้งหมดที่เกี่ยวข้องกับ Maven (เช่น M2_HOME, M2_OPTS เป็นต้น)
  • ตรวจสอบให้แน่ใจว่าได้ตั้งค่าตัวแปรระบบ JAVA_HOME แล้ว (เช่น "C: \ Program Files \ Java \ jdk1.8.0_172")
  • ตรวจสอบให้แน่ใจว่ามีการเพิ่มตำแหน่ง java bin ในตัวแปรระบบ "path" (เช่น "% JAVA_HOME% \ bin")
  • ตรวจสอบให้แน่ใจว่ามีการเพิ่มตำแหน่ง maven bin ในตัวแปรระบบ "path" (เช่น "C: \ MyInstalls \ apache-maven-3.5.4 \ bin")

แล้ว ...

  • ตรวจสอบว่ามีการตั้งค่า java (ที่ commandprompt: java -version)
  • ตรวจสอบว่ามีการตั้งค่า maven (ที่ commandprompt: mvn --version)

3

เปิดเทอร์มินัลใหม่และทำสิ่งต่อไปนี้

M2_HOME=/Users/macbook/apache-maven-3.6.1 //Set where maven is
M2=$M2_HOME/bin                          //Set home as bin
export PATH=$M2:$PATH                   //Place the new path

จากนั้นพิมพ์

mvn -version

คุณสามารถตั้งค่า./bash_profileให้ทำโดยอัตโนมัติทุกครั้งที่คุณเรียกใช้เทอร์มินัล


2

ฉันมีปัญหาเดียวกัน ฉันมีกล่อง Windows xp และเมื่อฉันพิมพ์mvn -versionที่พรอมต์บรรทัดคำสั่งฉันได้รับข้อความแสดงข้อผิดพลาดที่น่ากลัว

"Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher"

ฉันยืนยันว่าM2_HOMEตัวแปรของฉันถูกตั้งค่าเป็นพา ธ ที่ Maven ถูกติดตั้งบนพีซีและecho %path%ยืนยันว่า Maven อยู่ในเส้นทางของฉัน

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

ฉันคัดลอกเส้นทางที่กำหนดให้กับM2_HOMEตัวแปรของฉัน ฉันเปิดหน้าต่าง cmd และพิมพ์ cd และวางเส้นทางที่ฉันได้รับจากM2_HOMEตัวแปรของฉัน ณ จุดนั้นฉันรู้ว่าเส้นทางนั้นถูกต้องเพราะเส้นทางนั้นแสดงอยู่ในหน้าต่าง ณ จุดนี้ฉันป้อนคำสั่ง dir และแปลกใจฉันได้รับข้อผิดพลาดไม่พบไฟล์

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

ต่อไปฉันลองใช้mvn –versionคำสั่งอีกครั้ง แต่คราวนี้ฉันได้ผลลัพธ์ที่คาดหวังกลับมา

C:\>mvn -version
Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
Maven home: C:\Program Files\apache-maven-3.0.3
Java version: 1.5.0_16, vendor: Sun Microsystems Inc.
Java home: C:\Java\jdk1.5.0_16\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"

ในที่สุดฉันก็สร้างไฟล์ jar และ war และเว็บแอปของฉันก็ทำงานบน Tomcat ในเครื่องได้สำเร็จ

ฉันหวังว่านี่จะช่วยคุณได้บ้าง



1

นอกจากสิ่งที่ @khmarbaise ได้ชี้ให้เห็นแล้วฉันคิดว่าคุณพิมพ์ JAVA_HOME ของคุณผิด หากคุณติดตั้งในตำแหน่งเริ่มต้นไม่ควรมี "-" (ยัติภังค์) ระหว่าง jdk และ 1.7.0_04 ดังนั้นมันจะเป็น

JAVA_HOME C:\Program Files\Java\jdk1.7.0_04 

ขอบคุณ แต่น่าเสียดายที่ฉันพิมพ์ผิดที่นี่เท่านั้นและมันก็เหมือนกับที่คุณบอก "ไม่มียัติภังค์"
manofsins

1

สำหรับคนอื่น ๆ ที่อาจพบปัญหานี้อย่าลืมตรวจสอบ ~ / .mavenrc สำหรับการตั้งค่า M2_HOME หรือ JAVA_HOME


1

ลองดาวน์โหลดไบนารี zip (เช่น Maven 3.0.5 (Binary zip)) แทนแหล่งที่มาที่สมบูรณ์ในเว็บไซต์ maven อย่างเป็นทางการ ตรวจสอบให้แน่ใจด้วยว่าบรรทัดคำสั่งรู้จักคำสั่ง java และ javac ฉันสังเกตว่า Maven Source zip ไม่ได้รวมไลบรารีใด ๆ ไว้ที่โฟลเดอร์ lib แต่ Binary zip มี + ในโฟลเดอร์สำหรับบูตมันมี plexus-classworlds-2.4.jar บางทีปัญหาอาจเกิดจากการไม่มีห้องสมุดเหล่านี้ อย่างไรก็ตามมันช่วยฉันได้ดังนั้น M2_HOME ของฉันคือ: C: \ Program Files \ Java \ apache-maven-3.0.5 และที่ PATH ฉันใส่: C: \ Program Files \ Java \ apache-maven-3.0.5 \ bin


1

ฉันพบว่าปัญหานี้ใน centOS ของฉันเกิดจาก "Oracle Java ถูกแทนที่ด้วย gcj" หลังจากเปลี่ยน java เริ่มต้นเป็น "Oracle Java" ปัญหาได้รับการแก้ไขแล้ว

alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
 + 2           /usr/java/jdk1.7.0_67/bin/java

1

ดูเหมือนว่าคุณได้ติดตั้งไฟล์ต้นฉบับแล้ว (เนื่องจากsrcมาเฉพาะใน Source Files และเราไม่ต้องการ) พยายามที่จะติดตั้งไฟล์ไบนารีจาก ที่นั่น และแล้วตัวแปรสภาพแวดล้อมชุดตามที่อธิบายไว้ ที่นั่น สิ่งนี้ได้ผลสำหรับฉัน และฉันมั่นใจว่ามันจะเหมาะกับคุณด้วย


1

ฉันคิดว่าคุณดาวน์โหลดเวอร์ชันผิด ฉันพบปัญหานี้ในตอนนี้ไม่มีวิธีใดที่ใช้ได้ผลหลังจากค้นหาและค้นหา สุดท้ายผมพบว่า Maven ฉันดาวน์โหลดเป็นแหล่งที่มาของข้อมูลที่เก็บซิป หลังจากที่ฉันเปลี่ยนเป็นไฟล์ zip แบบไบนารีทุกอย่างก็เรียบร้อยดี


ฉันเพิ่งจะโพสต์สิ่งนี้ นี่คือปัญหาที่ฉันประสบ ถ้าเพียงฉันได้อ่านคำตอบของคุณก่อนที่จะช่วยฉัน 30 นาที
Bartho Bernsmann

1

ฉันก็ประสบปัญหาที่คล้ายกันเช่นกัน แต่ในกรณีของฉันฉันใช้โฟลเดอร์ apache-maven-3.3.3-src ในตัวแปรพา ธ ต่อมาฉันแก้ไขสิ่งเหล่านั้นด้วยเส้นทางที่ถูกต้องของโฟลเดอร์ apache-maven-3.3.3-bin วิธีนี้ช่วยแก้ปัญหาได้ ฉันไม่ได้บอกว่านั่นเป็นข้อผิดพลาดเดียวกันที่รายงานที่นี่ แต่ด้วยวิธีนี้คุณสามารถรับข้อผิดพลาดนี้และแก้ไขได้ นั่นคือสิ่งที่ฉันพยายามจะพูดที่นี่


0

ข้อผิดพลาดเดียวกันอาจปรากฏขึ้นแม้จะมีการตั้งค่าตัวแปรสภาพแวดล้อมที่ถูกต้องหากคุณคัดลอกbinไดเร็กทอรีONLY ไปยังไดเร็กทอรีการติดตั้ง ทำให้whichงานละเอียดและสามเณรติดขัด


0

ฉันมีปัญหานี้เมื่อฉันใช้ Maven 3.5.4 บน OpenJDK 11 บน Ubuntu OpenJDK 11 บน Ubuntu ยังคงเป็น JDK10:

$ ls -al /etc/alternatives/java
lrwxrwxrwx 1 root root 43 Aug 24 04:54 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
$ java --version
openjdk 10.0.2 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode)

ฉันติดตั้ง OpenJDK จาก Oracle ลงใน /opt/jdk-11.0.1 และเรียกใช้ Maven ดังนี้:

JAVA_HOME=/opt/jdk-11.0.1 mvn

ตอนนี้ใช้งานได้เหมือนมีเสน่ห์


0

ฉันมีปัญหากับปลั๊กอิน surefire เอง กลับไปที่เวอร์ชัน 2.6 ได้ผลสำหรับฉัน เวอร์ชัน 2.18 / 20 / 22.1 ทำให้ฉันมีข้อผิดพลาด ตอนนี้ฉันลองใช้ปลั๊กอิน surefire เวอร์ชัน 3.0.0-M1 และใช้งานได้

ดังนั้นมีบางอย่างผิดปกติใน Surefire plgin ระหว่างเวอร์ชัน 2.6 และ 3.0.0 ฉันคิดว่ามีบางอย่างที่เข้ารหัสเป็นค่าเริ่มต้นซึ่งไม่ควร



0

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

  1. ลบการอ้างอิง Mavin ทั้งหมดในตัวแปรสภาพแวดล้อม
  2. ดาวน์โหลดไบนารีจาก mavin
  3. คลายซิปไปยังตำแหน่งที่คุณต้องการเช่น C: \ apache-maven-3.6.0
  4. ไปที่ตัวแปรสภาพแวดล้อมและเพิ่มในเส้นทางตัวแปรของระบบ "C: \ apache-maven-3.6.0 \ bin"
  5. เริ่มพร้อมรับคำสั่งในฐานะผู้ดูแลระบบ
  6. ตรวจสอบเวอร์ชันด้วย: mvn -v

ผลลัพธ์ CMD:

Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20: 41: 47 + 02: 00) บ้าน Maven: C: \ apache-maven-3.6.0 \ bin ..


0

ฉันยังประสบกับข้อผิดพลาดต่อไปนี้ในระบบของฉัน (Mac)

ข้อผิดพลาด: ไม่พบหรือโหลดคลาสหลัก org.codehaus.plexus.classworlds.launcher.Launcher

หลังจากทำการเรียกดูแบบสุ่มฉันพบลิงก์ " http://maven.apache.org/install.html " ที่ระบุว่า "JAVA_HOME" ควรตั้งค่าเป็น "/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/ สารบัญ / Home / jre ".

เมื่อฉันเปลี่ยน "JAVA_HOME" ตามที่ระบุไว้ข้างต้นใน ".bash_profile" คำสั่ง "mvn" เริ่มทำงาน แต่คำสั่ง "javac -version" หยุดทำงาน

เมื่อฉันพิมพ์คำสั่ง "javac -version" ฉันได้รับข้อผิดพลาดต่อไปนี้

ไม่พบไฟล์ปฏิบัติการที่ "/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/bin/javac" (-1)

ดังนั้นฉันจึงย้อนกลับ "JAVA_HOME" เป็น "/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home" ใน ".bash_profile" และเพิ่มบรรทัดต่อไปนี้ที่ด้านบนในสคริปต์ "mvn"

ส่งออก JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre

ตอนนี้ทั้งคำสั่ง "mvn" และ "javac" ทำงานได้อย่างถูกต้อง แต่หลังจากสังเกตสคริปต์ mvn อย่างถี่ถ้วนแล้วฉันไม่สามารถสร้างความแตกต่างระหว่างคำสั่งต่อไปนี้ได้

/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / bin / java -classpath /Users/venkatarajeevmandava/Documents/Maven/apache-maven-3.6.1/boot/plexus-classworlds-2.6.0 jar -Dclassworlds.conf = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / bin / m2.conf -Dmaven.home = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 - Dlibrary.jansi.path = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / lib / jansi-native -Dmaven.multiModuleProjectDirectory = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / bin org.codehaus.plexus.classworlds.launcher.Launcher

/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre / bin / java -classpath /Users/venkatarajeevmandava/Documents/Maven/apache-maven-3.6.1/boot/plexus-classworlds-2.6 0.jar -Dclassworlds.conf = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / bin / m2.conf -Dmaven.home = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6 1 -Dlibrary.jansi.path = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1 / lib / jansi-native -Dmaven.multiModuleProjectDirectory = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6 1 / bin org.codehaus.plexus.classworlds.launcher.Launcher

ในคำสั่งแรกข้างต้นทำให้เกิดข้อผิดพลาดต่อไปนี้

ข้อผิดพลาด: ไม่พบหรือโหลดคลาสหลัก org.codehaus.plexus.classworlds.launcher.Launcher

ในขณะที่คำสั่งที่สองทำงานได้ดี โปรดทราบว่าทั้งสองเส้นทางข้างต้นมีคำสั่ง "java" ในขณะที่อีกเส้นทางหนึ่งมาจาก "jre" ส่วนอีกเส้นทางมาจาก "jdk"

ตัวแปรส่วนกลางอื่น ๆ มีดังต่อไปนี้ใน ".bash_profile"

ส่งออก M2_HOME = / Users / venkatarajeevmandava / Documents / Maven / apache-maven-3.6.1

ส่งออก PATH = $ PATH: $ M2_HOME / bin


-1

นี่เป็นปัญหาที่พบบ่อยขณะตั้งค่า Maven สิ่งที่คุณต้องทำมีดังต่อไปนี้: -

  1. M2_HOME: - D: \ apache-maven-2.0.11
  2. M2: - D: \ apache-maven-2.0.11 \ bin
  3. เส้นทาง: - ต่อท้ายด้วย;% M2%

M2_HOME & M2: - ต้องประกาศเป็นตัวแปรระบบไม่ใช่ตัวแปร USER / ADMIN

เส้นทาง: - อาจเป็นตัวแปรระบบหรือตัวแปร USER / ADMIN [PATH] โดยเฉพาะอย่างยิ่ง System Variable

เมื่อคุณทำการตั้งค่าตัวแปรทั้ง 3 นี้อย่างรอบคอบแล้วคุณสามารถตรวจสอบการติดตั้งของ Maven ได้ตามด้านล่าง

ใน CMD Prompt: -


C: \ Documents and Settings \ ADMIN> mvn --version


เอาท์พุท: -


Apache Maven 2.0.11 (r909250; 2010-02-12 11: 25: 50 + 0530) เวอร์ชัน Java: 1.6.0_22 Java home: C: \ Program Files \ Java \ jdk1.6.0_22 \ jre ตำแหน่งเริ่มต้น: en_US, แพลตฟอร์ม การเข้ารหัส: Cp1252 ชื่อระบบปฏิบัติการ: "windows xp" เวอร์ชัน: "5.1" arch: "x86" ตระกูล: "windows"

ขอบคุณ.


-1

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

Maven เป็นเครื่องมือ Java แบบบรรทัดคำสั่ง นั่นหมายความว่ามันไม่ใช่ไบนารีแบบสแตนด์อโลนมันเป็นชุดของ java .jars ซึ่งตีความโดย jvm ( java.exeบน windows javaบน linux)

mvnคำสั่งเป็นสคริปต์ บน windows มันเป็นสคริปต์ที่เรียกว่าmvn.cmdและบน linux เป็นเชลล์สคริปต์ ดังนั้นถ้าคุณเขียน: mvn installสิ่งที่จะเกิดขึ้น:

  1. ตัวแปลคำสั่ง ( /bin/shหรือcmd.exe) ถูกเรียกสำหรับสคริปต์การเรียกใช้จริง
  2. สคริปต์นี้ตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็น
  3. และสุดท้ายจะเรียกตัวแปลภาษาจาวาพร้อมกับคลาสพา ธ ที่ต้องการซึ่งมีฟังก์ชัน maven

ปัญหาเกิดจาก (2) โชคดีที่สคริปต์นี้เรียบง่ายมาก สำหรับโปรแกรมเมอร์ java ไม่ควรเป็นปัญหาใหญ่ในการดีบักสคริปต์ประมาณ 20 บรรทัดแม้ว่าจะเป็นภาษาต่างดาวเล็กน้อยก็ตาม

บน linux คุณสามารถดีบัก shellscripts ที่ให้แฟล็กกับตัว-xแปลเชลล์ของคุณ (ซึ่งน่าจะเป็นไปได้มากที่สุดbash) ใน windows คุณต้องหาวิธีอื่นในการดีบักcmd.exeสคริปต์ ดังนั้นแทนที่จะmvn installให้คำสั่งbash -x mvn installให้คำสั่ง

ผลลัพธ์จะเป็นดังนี้:

+ '[' -z '' ']'
+ '[' -f /etc/mavenrc ']'
+ '[' -f /home/picsa/.mavenrc ']'
+ cygwin=true
+ darwin=false

... ไม่ได้มากมายอะไร ...

+ MAVEN_PROJECTBASEDIR='C:\peter\bin'
+ export MAVEN_PROJECTBASEDIR
+ MAVEN_CMD_LINE_ARGS=' '
+ export MAVEN_CMD_LINE_ARGS
+ exec '/cygdrive/c/Program Files/Java/jdk1.8.0_66/bin/java' -classpath 'C:\peter/boot/plexus-classworlds-*.jar' '-Dclassworlds.conf=C:\peter/bin/m2.conf' '-Dmaven.home=C:\peter' '-Dmaven.multiModuleProjectDirectory=C:\peter\bin' org.codehaus.plexus.classworlds.launcher.Launcher
Fehler: Hauptklasse org.codehaus.plexus.classworlds.launcher.Launcher konnte nicht gefunden oder geladen werden

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

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