Không thể cài đặt Maven trên Windows: “JAVA_HOME được đặt thành một thư mục không hợp lệ”


98

Tôi đã làm theo hướng dẫn về Maven trong thư nhưng vẫn không thể cài đặt Maven trên Windows.

Khi tôi chạy phần sau trong dấu nhắc lệnh:

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

Tôi có:

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

Tôi đã điều hướng đến thư mục cài đặt maven và chạy mvn --versionvà nhận được:

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

nhưng khi chạy java -versiontôi nhận được:

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)

Vì vậy, tôi đã cài đặt Java. Bất cứ ai biết vấn đề là gì?

Câu trả lời:


172

Vấn đề là liên quan đến đường dẫn của bạn.

  1. Đảm bảo rằng thư mục "E: \ java resources \ apache-maven-2.2.0 \ bin" nằm trên đường dẫn tìm kiếm lệnh của bạn.

  2. Đảm bảo rằng biến JAVA_HOME tham chiếu đến thư mục chính để cài đặt Java của bạn. Nếu bạn đang thực thi Java từ "E: \ Sun \ SDK \ jdk \ bin", thì biến JAVA_HOME cần trỏ đến "E: \ Sun \ SDK \ jdk".

    NB: JAVA_HOME KHÔNG được kết thúc bằng "\ bin" 1 .

  3. Đảm bảo rằng bạn không đặt dấu chấm phẩy trong biến JAVA_HOME 2 .

    NB: JAVA_HOME phải là một tên thư mục duy nhất, không phải là danh sách "giống PATH" các tên thư mục được phân tách bằng dấu chấm phẩy.

Cũng lưu ý rằng bạn có thể gặp sự cố nếu bỏ qua lời khuyên này trong hướng dẫn Maven trên Windows về khoảng trắng trong tên đường dẫn chính.

"Maven, giống như nhiều công cụ đa nền tảng, có thể gặp sự cố khi có các ký tự khoảng trắng trong tên đường dẫn quan trọng ."

"Bạn cần cài đặt Java SDK (ví dụ: từ trang web tải xuống của Oracle) và bạn nên cài đặt nó vào tên đường dẫn không có dấu cách , chẳng hạn như c: \ j2se1.6."

"Bạn cần giải nén bản phân phối Maven. Đừng giải nén nó ở giữa mã nguồn của bạn; hãy chọn một số vị trí ( không có khoảng trắng trong đường dẫn! ) Và giải nén nó ở đó."

Cách khắc phục đơn giản cho điều này là cài đặt lại Java hoặc Maven ở một vị trí khác để không có khoảng trống trong đường dẫn


1 - .... trừ khi bạn đã có một lựa chọn điên rồ cho tên cho vị trí lắp đặt của mình.

2 - Rõ ràng một giải pháp "voodoo" phổ biến cho các vấn đề về đường dẫn Windows là đánh dấu chấm phẩy ở cuối. Nó không được khuyến khích nói chung, hoàn toàn không hoạt động ở đây.


29

LỖI: JAVA_HOME được đặt thành một thư mục không hợp lệ. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Vui lòng đặt biến JAVA_HOME trong môi trường của bạn để khớp với vị trí cài đặt Java của bạn

JAVA_HOMEnên được đặt thành E:\Sun\SDK\jdk. PATHnên được thiết lập để bao gồm %JAVA_HOME%\bin.


13

Tôi đã gặp phải sự cố này khi cài đặt Grails.

Vấn đề là JAVA_HOME của tôi là c:\sun\jdk\PATH của tôi có%JAVA_HOME%bin

Tôi đã thay đổi nó thành: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Nó đã hoạt động sau đó.


10

Tôi đang gặp phải vấn đề tương tự và vừa cập nhật JAVA_HOME phù hợp với tôi.

trước đây nó giống như thế này: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin Chỉ cần gỡ bỏ \ bin và nó hoạt động với tôi.


4

Do các hạn chế về bảo mật tại nơi làm việc hiện tại của tôi, tôi không thể đặt các biến môi trường trên PC chạy Windows của mình.

Cách giải quyết của tôi là sao chép tệp mvn.bat từ% M2% vào C: \ WINNT và thêm phần sau vào đầu tệp lô:

@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%

Không phải là giải pháp đẹp nhất nhưng nó hoạt động. Nếu ai đó có bất kỳ cách nào khác hoặc giải quyết vấn đề mà các env vars tiêu chuẩn không thể được thiết lập vào hệ thống, tôi hoan nghênh phản hồi của họ.


3

Tôi đã gặp vấn đề tương tự và không có câu trả lời nào ở trên khắc phục sự cố cho tôi vì các biến env của tôi đã được đặt xong. Tôi vừa mới cài đặt lại Java của mình.

Những gì đã làm việc là

  1. đi tới C:\path\to\apache-maven-3.0.4\binvà mở mvn.battệp.
  2. Tìm dòng trông giống như thế này @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Sửa nó cho đúng đường

Tôi không biết đây có phải là Windows cụ thể hay không, nhưng nó có thể giúp ích cho ai đó!


2

Sau nhiều lần thử không thành công, tôi đã tìm ra giải pháp

Đó là dấu ";" ở cuối JAVA_HOME mà tôi luôn đặt ở cuối mỗi biến mới mà tôi đặt. Vì vậy, hãy loại bỏ;.

JAVA_HOME cũng đặt nó trong Biến người dùng (không có ";" dĩ nhiên)


1
"... mà tôi luôn đặt ở cuối mỗi biến mới mà tôi đặt" - Tại sao bạn lại làm như vậy?
Stephen C

1

bạn nên đặt JAVA_HOME hoặc MAVEN_HOME không có thư mục bin, ví dụ: - JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Program Files (x86) \ apache-maven-3.1.1 ngay bây giờ path = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin nó hoạt động chính xác


1

Đôi khi trong Windows các khoảng trắng trong đường dẫn không được nhận dạng chính xác

Nếu bạn gặp sự cố về đường dẫn và đường dẫn có vẻ như

c:\Program Files\....

thử thay đổi nó ở định dạng DOS cũ như

"C:\Progra~1\...

Bạn có thể sử dụng dir /xđể kiểm tra cú pháp chính xác (cột thứ ba)

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 ...

Trong máy tính của tôi, JAVA_HOME là (và nó hoạt động)

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

Đã thử nghiệm trong Windows 10


0

JAVA_HOME sẽ giống như thế này C: \ PROGRA ~ 1 \ Java \ jdk

Hy vọng điều này sẽ hiệu quả!


0

Đây có vẻ là bài đăng cũ nhưng tôi vẫn muốn chia sẻ cách khắc phục sự cố này cho tôi.

Đối với người dùng, những người không có quyền truy cập quản trị và khi họ mở dấu nhắc lệnh, nó sẽ chạy dưới đặc quyền của người dùng. Nó có nghĩa là, bạn có thể có đường dẫn như C: \ Users \

vì vậy khi thử C: \ Users \ XYZ> mvn --version, nó thực sự tìm kiếm đường dẫn JAVA_HOME từ các biến người dùng chứ không phải các biến hệ thống trong Biến môi trường.

Vì vậy, để khắc phục điều này, chúng ta cần tạo một biến môi trường cho JAVA_HOME trong các biến người dùng.

Hy vọng, điều này sẽ giúp ai đó.


Ermmm ... Các biến môi trường của người dùng ghi đè các biến môi trường hệ thống trên Windows. Nếu bạn có một biến môi trường hệ thống và người dùng có cùng tên, thì biến người dùng sẽ "thắng" và đó là những gì ứng dụng nhìn thấy.
Stephen C

0

Chạy eclipse và cũng chạy Maven sẽ yêu cầu bạn lưu trữ hai biến đường dẫn, một ở vị trí jdk1.7_x_x_x của bạn và cũng trong jdk1.7_x_x_ \ bin của bạn. Nếu bạn đang sử dụng Windows, khi bạn ở trong các biến môi trường của mình, hãy làm như sau:

1) tạo một biến USER có tên là JAVA_HOME. Trỏ mục này đến vị trí của tệp JAVA của bạn. Ví dụ: "C: \ Program Files \ Java \ jdk1.7.0_51" (bỏ dấu ngoặc kép)

2) trong PATH, nối% JAVA_HOME% vào PATH. Thao tác này sẽ thêm vị trí tệp từ bước 1 vào PATH của bạn. Điều này tốt cho MAVEN

3) nếu bạn đang sử dụng eclipse, bạn cần có điểm đường dẫn đến "C: \ Program Files \ Java \ jdk1.7.0_51 \ bin". Bây giờ, hãy nối% JAVA_HOME% \ bin vào cuối đường dẫn của bạn.

4) đường dẫn của bạn trông giống như sau: C: \ Program Files (x86) \ Google \ google_appengine \; C: \ Users \ username \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Lưu ý: các mục được bao gồm trong% 's như% M2% là các biến được chỉ định. Có vẻ thừa nhưng cần thiết. Bạn có thể xác nhận rằng mọi thứ hoạt động bằng cách nhập:

java -version
javac -version
mvn -version

Mỗi một trong ba câu lệnh được nhập trong dấu nhắc dấu phẩy sẽ không trả về lỗi.


Bước 2) là không chính xác và không cần thiết. Chuỗi công cụ Java hoặc Maven đều không yêu cầu% JAVA_HOME% phải ở trong biến "PATH". (Nó sẽ không làm bất cứ thực hại, nhưng không tốt một trong hai.) Reference - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C

0

sử dụng windows 10

Tôi đang gặp sự cố .. sau đó tôi đã xóa hoàn toàn biến JAVA_HOME và chỉ thêm% JAVA_HOME% \ bin vào PATH thì biến đó hoạt động !!! cho tôi


1
Cảm ơn. Nó hoạt động sau khi thêm "/ bin" vào cuối biến Java_home
Rahul

-1

JDK đã chuyển đổi vị trí của java.exe giữa 1.6 và 1.7 !!!

Trong trường hợp của tôi, tôi thấy rằng JAVA_HOME cho JDK phải thêm \ jre vào cuối. Tệp dơi mvn đang tìm kiếm java.exe và nó tìm kiếm nó trong JAVA_HOME \ bin. Nó không có cho JDK 1.7; nó nằm trong JAVA_HOME \ jre \ bin. Trong JDK 1.6, nó nằm trong JAVA_HOME \ bin.

Hy vọng điều này sẽ giúp ai đó.


1
Tôi tin rằng điều này là không chính xác. Theo Tài liệu Oracle Chính thức cho Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ), trong cài đặt JDK, lệnh "java" xuất hiện cả trong "JAVA_HOME \ bin" và " JAVA_HOME \ jre \ bin ". Nếu điều này không xảy ra trong cài đặt của bạn, thì ai đó / điều gì đó đã gây rối với nó!
Stephen C

Hấp dẫn. Nó không nằm trong thư mục / bin của tôi, chỉ là / jre / bin của tôi. Có lẽ tôi cần cài đặt lại JDK mới nhất
Brian Reinhold

-1

Tình hình của tôi hơi khác một chút.

  • JAVA_HOME đã được đặt đúng thành điểm 1,7
  • Các dự án Maven khác đang hoạt động / xây dựng tốt với 1,7 tính năng.
  • PATH đã được đặt đúng cách.
  • Mọi thứ đều được cập nhật.

Dự án Maven mới đơn giản của tôi vẫn không hoạt động. Những gì tôi nhận thấy là sự khác biệt trong các bản ghi khi tôi chạy mvn clean install. Đối với các dự án Maven cũ của tôi, nó cho thấy

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

Nhưng đối với dự án mới của tôi, nó cho thấy:

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

Vì vậy, tôi đã xem xét POM.xmlvà nhận thấy điều này trong POM của dự án cũ:

<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>

Về cơ bản, plugin này cho biết phiên bản trình biên dịch nào sẽ sử dụng để biên dịch. Chỉ cần thêm nó vào dự án mới POM.xmlvà mọi thứ đã hoạt động.

Hy vọng nó hữu ích cho ai đó.


Đây không phải là một câu trả lời hợp lệ cho câu hỏi này. Các triệu chứng khác nhau. Giải pháp là khác nhau.
Stephen C

-1

Tôi đang sử dụng Windows 7, vấn đề tôi gặp phải rất đơn giản:

Tôi có cái này cho giá trị biến môi trường JAVA_HOME của mình:

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

khi nó muốn:

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

dấu chấm phẩy lại đình công!

:)

Đây là cách tôi giải quyết vấn đề này, vì vậy đây sẽ là một trong những giải pháp khả thi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.