ไม่สามารถติดตั้ง Maven บน Windows:“ JAVA_HOME ถูกตั้งค่าเป็นไดเร็กทอรีที่ไม่ถูกต้อง”


98

ฉันทำตามแบบฝึกหัด Mavenสำหรับจดหมาย แต่ยังไม่สามารถติดตั้ง Maven บน Windows ได้

เมื่อฉันเรียกใช้สิ่งต่อไปนี้ในพรอมต์คำสั่ง:

E:\Documents and Settings\zach>mvn --version

ฉันเข้าใจ:

'mvn' is not recognized as an internal or external command, operable program or batch file.

ฉันไปที่โฟลเดอร์ maven install และเรียกใช้mvn --versionและได้รับ:

E:\java resources\apache-maven-2.2.0\bin>mvn --version
ERROR: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "E:\Sun\SDK\jdk\bin"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation

แต่เมื่อฉันวิ่งjava -versionฉันจะได้รับ:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode)

ดังนั้นฉันจึงติดตั้ง Java ใครทราบว่าปัญหาคืออะไร?

คำตอบ:


172

ปัญหาจะทำอย่างไรกับเส้นทางของคุณ

  1. ตรวจสอบให้แน่ใจว่าไดเร็กทอรี "E: \ java resources \ apache-maven-2.2.0 \ bin" อยู่บนเส้นทางการค้นหาคำสั่งของคุณ

  2. ตรวจสอบให้แน่ใจว่าตัวแปร JAVA_HOME อ้างถึงโฮมไดเร็กทอรีสำหรับการติดตั้ง Java ของคุณ หากคุณเรียกใช้ Java จาก "E: \ Sun \ SDK \ jdk \ bin" ตัวแปร JAVA_HOME จะต้องชี้ไปที่ "E: \ Sun \ SDK \ jdk"

    หมายเหตุ: JAVA_HOME ไม่ควรลงท้ายด้วย "\ bin" 1 .

  3. ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใส่อัฒภาคในตัวแปร JAVA_HOME 2 2

    หมายเหตุ: JAVA_HOME ควรเป็นชื่อไดเร็กทอรีเดียวไม่ใช่ "PATH-like" ของชื่อไดเร็กทอรีที่คั่นด้วยอัฒภาค

โปรดทราบว่าคุณอาจประสบปัญหาได้หากคุณละเลยคำแนะนำนี้ในคำแนะนำMaven บน Windowsเกี่ยวกับช่องว่างในชื่อพา ธ หลัก

"Maven เช่นเดียวกับเครื่องมือข้ามแพลตฟอร์มจำนวนมากอาจพบปัญหาเมื่อมีอักขระเว้นวรรคในชื่อพา ธ ที่สำคัญ "

"คุณต้องติดตั้ง Java SDK (เช่นจากไซต์ดาวน์โหลดของ Oracle) และคุณควรติดตั้งลงในชื่อพา ธ ที่ไม่มีช่องว่างเช่น c: \ j2se1.6" "

"คุณต้องแกะการแจกจ่าย Maven อย่าแกะออกจากกล่องตรงกลางของซอร์สโค้ดของคุณเลือกตำแหน่ง ( โดยไม่มีช่องว่างในเส้นทาง! ) และแกะออกจากกล่องที่นั่น"

วิธีแก้ไขง่ายๆสำหรับสิ่งนี้คือการติดตั้ง Java หรือ Maven ใหม่ในตำแหน่งอื่นเพื่อไม่ให้มีช่องว่างในเส้นทาง


1 - .... เว้นแต่คุณจะเลือกชื่อสถานที่ติดตั้งของคุณอย่างบ้าคลั่ง

2 - เห็นได้ชัดว่าวิธีแก้ปัญหา "วูดู" ทั่วไปสำหรับปัญหาเส้นทาง Windows คือการตีอัฒภาคในตอนท้าย ไม่แนะนำโดยทั่วไปใช้ไม่ได้กับที่นี่อย่างแน่นอน


29

ข้อผิดพลาด: JAVA_HOME ถูกตั้งค่าเป็นไดเร็กทอรีที่ไม่ถูกต้อง JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" โปรดตั้งค่าตัวแปร JAVA_HOME ในสภาพแวดล้อมของคุณให้ตรงกับตำแหน่งของการติดตั้ง Java ของคุณ

JAVA_HOMEE:\Sun\SDK\jdkควรจะกำหนดให้ ควรจะกำหนดให้รวมถึงPATH%JAVA_HOME%\bin


13

ฉันพบปัญหานี้ด้วยการติดตั้ง Grails

ปัญหาคือJAVA_HOMEของฉันคือc:\sun\jdk\และPATHของฉันมี%JAVA_HOME%bin

ฉันเปลี่ยนเป็น: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

มันทำงานหลังจากนั้น


10

ฉันประสบปัญหาเดียวกันและเพิ่งอัปเดต JAVA_HOME ที่ใช้ได้สำหรับฉัน

ก่อนหน้านี้มันเป็นแบบนี้: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin เพิ่งลบ \ bin ออกและมันก็ใช้ได้สำหรับฉัน


4

เนื่องจากข้อ จำกัด ด้านความปลอดภัยในที่ทำงานปัจจุบันของฉันฉันไม่สามารถตั้งค่าตัวแปรสภาพแวดล้อมบนพีซีที่ใช้ Windows ของฉันได้

วิธีแก้ปัญหาของฉันคือคัดลอกไฟล์ mvn.bat จาก% M2% ไปยัง C: \ WINNT และเพิ่มสิ่งต่อไปนี้ที่ด้านบนของไฟล์แบตช์:

@REM Needed as unable to set env variables on my desktop PC.

set MAVEN_OPTS=-Xms256m -Xmx1024m
set M2_HOME=C:\apache-maven-3.0.4
set M2=%M2_HOME%\bin
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_15
set PATH=%JAVA_HOME%\bin;%M2%;%PATH%

ไม่ใช่ทางออกที่ดีที่สุด แต่ใช้ได้ผล หากใครมีวิธีอื่นหรือวิธีแก้ไขที่ไม่สามารถตั้งค่า env vars มาตรฐานลงในระบบได้เรายินดีรับฟังคำตอบ


3

ฉันมีปัญหาเดียวกันและไม่มีคำตอบใดข้างต้นแก้ไขให้ฉันเพราะตัวแปร env ของฉันถูกตั้งค่าทั้งหมด ฉันเพิ่งติดตั้ง Java ของฉันใหม่

สิ่งที่ได้ผลคือการ

  1. ไปที่C:\path\to\apache-maven-3.0.4\binและเปิดmvn.batไฟล์
  2. หาเส้นที่มีลักษณะดังนี้ @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. แก้ไขให้ถูกทาง

ฉันไม่รู้ว่านี่เป็น Windows เฉพาะหรือเปล่า แต่อาจช่วยใครบางคนได้!


2

หลังจากพยายามล้มเหลวหลายครั้งฉันพบวิธีแก้ปัญหา

มันเป็น ";" ในตอนท้ายของ JAVA_HOME ซึ่งฉันมักจะใส่ไว้ท้ายตัวแปรใหม่แต่ละตัวที่ฉันตั้งไว้ ดังนั้นกำจัด;.

JAVA_HOME ตั้งค่าใน User Variable ด้วย (โดยไม่มี ";" ofcourse)


1
"... ซึ่งฉันมักจะใส่ไว้ท้ายตัวแปรใหม่แต่ละตัวที่ฉันตั้งไว้" - ทำไมคุณถึงทำเช่นนั้น?
Stephen C

1

คุณควรตั้งค่า JAVA_HOME หรือ MAVEN_HOME โดยไม่มีไดเร็กทอรี bin ตัวอย่างเช่น - JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Program Files (x86) \ apache-maven-3.1.1 ทันที เส้นทาง = ..... ;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin มันทำงานได้อย่างถูกต้อง


1

บางครั้งใน Windows ช่องว่างในเส้นทางจะไม่รู้จักอย่างถูกต้อง

หากคุณมีปัญหาเส้นทางและเส้นทางดูเหมือนว่า

c:\Program Files\....

ลองเปลี่ยนเป็นรูปแบบ DOS เก่าเช่น

"C:\Progra~1\...

คุณสามารถใช้dir /xเพื่อตรวจสอบไวยากรณ์ที่ถูกต้อง (คอลัมน์ที่สาม)

C:\>dir /x ... 11.01.2008 15:47 <DIR> DOCUME~1 Documents and Settings 01.12.2006 09:10 <DIR> MYPROJ~1 My Projects 21.01.2011 14:08 <DIR> PROGRA~1 Program Files ...

ในพีซีของฉัน JAVA_HOME คือ (และใช้งานได้)

"C:\Progra~1\Java\jdk1.8.0_121"

ทดสอบใน Windows 10



0

ดูเหมือนว่าจะเป็นโพสต์เก่า แต่ฉันก็ยังอยากแบ่งปันว่าปัญหานี้ได้รับการแก้ไขอย่างไรสำหรับฉัน

สำหรับผู้ใช้ที่ไม่มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบและเมื่อเปิดพรอมต์คำสั่งจะทำงานภายใต้สิทธิ์ของผู้ใช้ หมายความว่าคุณอาจมีเส้นทางเช่น C: \ Users \

ดังนั้นเมื่อลอง C: \ Users \ XYZ> mvn --version จะค้นหาเส้นทาง JAVA_HOME จากตัวแปรผู้ใช้ไม่ใช่ตัวแปรระบบในตัวแปรสภาพแวดล้อม

ดังนั้นในการแก้ไขปัญหานี้เราจำเป็นต้องสร้างตัวแปรสภาพแวดล้อมสำหรับ JAVA_HOME ในตัวแปรผู้ใช้

หวังว่านี่จะช่วยใครบางคนได้


เอ่อ ... ตัวแปรสภาพแวดล้อมของผู้ใช้จะแทนที่ตัวแปรสภาพแวดล้อมของระบบบน Windows หากคุณมีตัวแปรระบบและสภาพแวดล้อมของผู้ใช้ที่มีชื่อเดียวกันตัวแปรผู้ใช้จะ "ชนะ" และสิ่งที่แอปพลิเคชันเห็น
Stephen C

0

การรัน eclipse และการรัน Maven จะทำให้คุณต้องจัดเก็บตัวแปรพา ธ สองตัวแปรหนึ่งในตำแหน่ง jdk1.7_x_x_x ของคุณและใน jdk1.7_x_x_ \ bin ของคุณ หากคุณกำลังใช้ Windows เมื่อคุณอยู่ในตัวแปรสภาพแวดล้อมของคุณให้ทำดังต่อไปนี้:

1) สร้างตัวแปร USER ชื่อ JAVA_HOME ชี้ไปที่ตำแหน่งของไฟล์ JAVA ของคุณ ตัวอย่างเช่น: "C: \ Program Files \ Java \ jdk1.7.0_51" (ลบเครื่องหมายคำพูด)

2) ภายใต้ PATH ให้ผนวก% JAVA_HOME% เข้ากับ PATH สิ่งนี้จะเพิ่มตำแหน่งไฟล์จากขั้นตอนที่ 1 ไปยัง PATH ของคุณ นี่เป็นสิ่งที่ดีสำหรับ MAVEN

3) ถ้าคุณใช้ eclipse คุณต้องให้พา ธ ชี้ไปที่ "C: \ Program Files \ Java \ jdk1.7.0_51 \ bin" ตอนนี้ต่อท้าย% JAVA_HOME% \ bin ต่อท้ายเส้นทางของคุณ

4) เส้นทางของคุณควรมีลักษณะดังนี้ C: \ Program Files (x86) \ Google \ google_appengine \; C: \ Users \ ชื่อผู้ใช้ \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

หมายเหตุ: รายการที่อยู่ใน% เช่น% M2% จะถูกกำหนดตัวแปร มันดูซ้ำซ้อน แต่จำเป็น คุณสามารถยืนยันว่าทุกอย่างทำงานได้โดยพิมพ์:

java -version
javac -version
mvn - เวอร์ชัน

แต่ละคำสั่งทั้งสามที่พิมพ์ในพรอมต์คอมแมนไม่ควรส่งคืนข้อผิดพลาด


ขั้นตอนที่ 2) ไม่ถูกต้องและไม่จำเป็น Java toolchain หรือ Maven ไม่ต้องการให้% JAVA_HOME% อยู่ในตัวแปร "PATH" (มันจะไม่ดำเนินการใด ๆจริงอันตราย แต่ไม่ดีอย่างใดอย่างหนึ่ง.) อ้างอิง - tutorialspoint.com/maven/maven_environment_setup.htm
สตีเฟ่น C

0

ใช้ windows 10

ฉันประสบปัญหา .. จากนั้นฉันก็ลบตัวแปรJAVA_HOME อย่างสมบูรณ์และเพิ่งเพิ่ม% JAVA_HOME% \ bin ใน PATH จากนั้นมันก็ใช้งานได้ !!! สำหรับฉัน


1
ขอบคุณมันใช้งานได้หลังจากเพิ่ม "/ bin" ต่อท้ายตัวแปร Java_home
Rahul

-1

JDK ได้เปลี่ยนตำแหน่งของ java.exe ระหว่าง 1.6 และ 1.7 !!!

ในกรณีของฉันฉันพบว่า JAVA_HOME สำหรับ JDK ต้องเพิ่ม \ jre ที่ส่วนท้าย ไฟล์ mvn bat กำลังมองหา java.exe และค้นหาใน JAVA_HOME \ bin ไม่มีสำหรับ JDK 1.7; อยู่ใน JAVA_HOME \ jre \ bin ใน JDK 1.6 นั้นเป็นใน JAVA_HOME \ bin

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


1
ฉันเชื่อว่าสิ่งนี้ไม่ถูกต้อง ตามเอกสาร Oracle อย่างเป็นทางการสำหรับ Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ) ในการติดตั้ง JDK คำสั่ง "java" จะปรากฏทั้งใน "JAVA_HOME \ bin" และ " JAVA_HOME \ jre \ bin " หากสิ่งนี้ไม่เป็นเช่นนั้นในการติดตั้งของคุณแสดงว่ามีใครบางคนมายุ่งกับมัน!
Stephen C

น่าสนใจ. ไม่ได้อยู่ในไดเร็กทอรี / bin ของฉันมีเพียง my / jre / bin บางทีฉันอาจต้องติดตั้ง JDK ล่าสุดอีกครั้ง
Brian Reinhold

-1

สถานการณ์ของฉันแตกต่างไปเล็กน้อย

  • JAVA_HOME ถูกตั้งค่าอย่างถูกต้องให้ชี้ไปที่ 1.7
  • โครงการอื่น ๆ ของ Maven ทำงาน / สร้างได้ดีด้วยคุณสมบัติ 1.7
  • PATH ถูกตั้งค่าอย่างถูกต้อง
  • ทุกอย่างเป็นข้อมูลล่าสุด

โครงการ Maven ใหม่ที่เรียบง่ายของฉันยังใช้งานไม่ได้ mvn clean installสิ่งที่ผมสังเกตเห็นความแตกต่างในบันทึกเมื่อฉันวิ่ง สำหรับโครงการ Maven ที่เก่ากว่าของฉันมันแสดงให้เห็น

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ oldProject---

แต่สำหรับโครงการใหม่ของฉันมันแสดงให้เห็น:

[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ newProject ---

ดังนั้นฉันดูPOM.xmlและสังเกตเห็นสิ่งนี้ใน POM ของโครงการเก่า:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

โดยพื้นฐานแล้วปลั๊กอินนี้จะบอกเวอร์ชันของคอมไพเลอร์ที่จะใช้ในการคอมไพล์ เพิ่งเพิ่มลงในโครงการใหม่POM.xmlและสิ่งต่างๆได้ผล

หวังว่าจะเป็นประโยชน์กับใครบางคน


นี่ไม่ใช่คำตอบที่ถูกต้องสำหรับคำถามนี้ อาการจะแตกต่างกัน การแก้ปัญหาแตกต่างกัน
Stephen C

-1

ฉันใช้ Windows 7 ปัญหาที่ฉันพบนั้นง่ายมาก:

ฉันมีสิ่งนี้สำหรับค่าตัวแปรสภาพแวดล้อม JAVA_HOME ของฉัน:

"C:\Program Files\Java\jdk1.7.0_51;"

เมื่อต้องการ:

"C:\Program Files\Java\jdk1.7.0_51"

เซมิไฟนอลกลับมาอีกครั้ง!

:)

นี่คือวิธีที่ฉันแก้ปัญหานี้ดังนั้นนี่น่าจะเป็นทางออกหนึ่งที่เป็นไปได้

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