Tidak dapat menginstal Maven di Windows: “JAVA_HOME disetel ke direktori yang tidak valid”

98

Saya mengikuti tutorial Maven sampai ke awal tetapi saya masih tidak bisa menginstal Maven di Windows.

Ketika saya menjalankan perintah berikut di command prompt:

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

Saya mendapat:

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

Saya menavigasi ke folder instal maven dan menjalankan mvn --versiondan mendapatkan:

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

tapi ketika saya lari java -versionsaya mendapatkan:

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)

Jadi saya sudah menginstal Java. Ada yang tahu apa masalahnya?

hello_world_infinity
sumber

Jawaban:

172

Masalahnya berkaitan dengan jalan Anda.

  1. Pastikan direktori "E: \ java resources \ apache-maven-2.2.0 \ bin" ada di jalur pencarian perintah Anda.

  2. Pastikan variabel JAVA_HOME mengacu pada direktori home untuk instalasi Java Anda. Jika Anda menjalankan Java dari "E: \ Sun \ SDK \ jdk \ bin", variabel JAVA_HOME harus mengarah ke "E: \ Sun \ SDK \ jdk".

    NB: JAVA_HOME TIDAK boleh diakhiri dengan "\ bin" 1 .

  3. Pastikan Anda tidak meletakkan titik koma di variabel JAVA_HOME 2 .

    NB: JAVA_HOME harus berupa nama direktori tunggal, bukan daftar nama direktori yang "mirip-PATH" yang dipisahkan oleh titik koma.

Perhatikan juga bahwa Anda dapat mengalami masalah jika Anda telah mengabaikan saran ini dalam instruksi Maven di Windows tentang spasi di nama jalur utama.

"Maven, seperti banyak alat lintas platform, dapat menghadapi masalah saat ada karakter spasi di nama jalur penting ."

"Anda perlu menginstal Java SDK (misalnya dari situs download Oracle), dan Anda harus menginstalnya ke nama jalur tanpa spasi , seperti c: \ j2se1.6." '

"Anda perlu membongkar distribusi Maven. Jangan membukanya di tengah kode sumber Anda; pilih beberapa lokasi ( tanpa spasi di jalur! ) Dan buka kemasannya di sana."

Solusi sederhana untuk ini adalah menginstal ulang Java atau Maven di lokasi yang berbeda sehingga tidak ada ruang di jalurnya.


1 - .... kecuali Anda telah membuat pilihan yang tidak masuk akal untuk nama lokasi instalasi Anda.

2 - Tampaknya solusi "voodoo" yang umum untuk masalah jalur Windows adalah dengan memukul titik koma di bagian akhir. Tidak disarankan secara umum, sama sekali tidak berfungsi di sini.

Stephen C
sumber
29

EROR: JAVA_HOME disetel ke direktori yang tidak valid. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Harap setel variabel JAVA_HOME di lingkungan Anda agar sesuai dengan lokasi instalasi Java Anda

JAVA_HOMEharus disetel ke E:\Sun\SDK\jdk. PATHharus diatur untuk menyertakan %JAVA_HOME%\bin.

dfa
sumber
13

Saya mengalami masalah ini dengan menginstal Grails.

Masalahnya adalah saya JAVA_HOME adalah c:\sun\jdk\dan saya PATH memiliki%JAVA_HOME%bin

Saya mengubahnya menjadi: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Ini berhasil setelah itu.

L_7337
sumber
10

Saya menghadapi masalah yang sama dan baru saja memperbarui JAVA_HOME yang berhasil untuk saya.

sebelumnya seperti ini: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin Baru saja menghapus \ bin dan berhasil untuk saya.

pengguna3548196
sumber
4

Karena batasan keamanan di tempat kerja saya saat ini, saya tidak dapat mengatur variabel lingkungan pada PC berbasis Windows saya.

Solusi saya adalah menyalin file mvn.bat dari% M2% ke C: \ WINNT dan menambahkan yang berikut ini ke bagian atas file batch:

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

Bukan solusi terbaik tetapi berhasil. Jika ada yang memiliki cara lain atau solusi di mana env vars standar tidak dapat diatur ke dalam sistem, saya akan menyambut tanggapan mereka.

theINtoy
sumber
3

Saya memiliki masalah yang sama dan tidak ada jawaban di atas yang memperbaikinya untuk saya karena variabel env saya sudah siap. Saya baru saja menginstal ulang Java saya.

Apa yang berhasil adalah

  1. buka C:\path\to\apache-maven-3.0.4\bindan buka mvn.batfile.
  2. Temukan garis yang terlihat seperti ini @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Perbaiki ke jalan yang benar

Saya tidak tahu apakah ini khusus Windows, tetapi mungkin membantu seseorang!

codinguser
sumber
2

Setelah banyak percobaan yang gagal, saya menemukan solusinya

Itu adalah ";" di akhir JAVA_HOME yang selalu saya letakkan di akhir setiap variabel baru yang saya tetapkan. Jadi singkirkan;.

JAVA_HOME juga mengaturnya di Variabel Pengguna (tanpa ofcourse ";")

Chinmoy
sumber
1
"... yang selalu saya letakkan di akhir setiap variabel baru yang saya tetapkan" - Mengapa Anda melakukan itu?
Stephen C
1

Anda harus mengatur JAVA_HOME atau MAVEN_HOME tanpa direktori bin misalnya: - JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Program Files (x86) \ apache-maven-3.1.1 now path = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin bekerja dengan benar

Alireza Alallah
sumber
1

Terkadang di Windows spasi putih di jalur tidak dikenali dengan benar

Jika Anda memiliki masalah jalan dan jalan sepertinya

c:\Program Files\....

coba ubah dalam format DOS lama seperti

"C:\Progra~1\...

Anda dapat menggunakan dir /xuntuk memeriksa sintaks yang benar (kolom ketiga)

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

Di pc saya JAVA_HOME adalah (dan berfungsi)

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

Diuji di Windows 10

Diego Betto
sumber
0

JAVA_HOME harus seperti ini C: \ PROGRA ~ 1 \ Java \ jdk

Semoga ini berhasil!

Merendahkan Rakshit
sumber
0

Ini sepertinya posting lama tetapi saya masih ingin berbagi bagaimana masalah ini diperbaiki untuk saya.

Untuk pengguna, yang tidak memiliki akses admin dan ketika mereka membuka prompt perintah, itu berjalan di bawah hak istimewa pengguna. Artinya, Anda mungkin memiliki jalur seperti C: \ Users \

jadi ketika mencoba C: \ Users \ XYZ> mvn --version, itu sebenarnya mencari jalur JAVA_HOME dari variabel pengguna bukan variabel sistem di Variabel Lingkungan.

Jadi, untuk memperbaikinya, kita perlu membuat variabel lingkungan untuk JAVA_HOME di variabel pengguna.

Semoga ini bisa membantu seseorang.

Maneshwar
sumber
Ermmm ... Variabel lingkungan pengguna menggantikan variabel lingkungan sistem di Windows. Jika Anda memiliki sistem dan variabel lingkungan pengguna dengan nama yang sama, maka variabel pengguna "menang", dan itulah yang dilihat aplikasi.
Stephen C
0

Menjalankan eclipse dan juga menjalankan Maven akan meminta Anda untuk menyimpan dua variabel jalur, satu di lokasi jdk1.7_x_x_x dan juga di jdk1.7_x_x_ \ bin Anda. Jika Anda menggunakan Windows, saat Anda berada di variabel lingkungan Anda, lakukan hal berikut:

1) buat variabel USER yang disebut JAVA_HOME. Arahkan ini ke lokasi file JAVA Anda. Misalnya: "C: \ Program Files \ Java \ jdk1.7.0_51" (hapus tanda kutip)

2) di bawah PATH, tambahkan% JAVA_HOME% ke PATH. Ini akan menambahkan lokasi file dari langkah 1 ke PATH Anda. Ini bagus untuk MAVEN

3) jika Anda menggunakan eclipse, Anda harus memiliki jalur yang mengarah ke "C: \ Program Files \ Java \ jdk1.7.0_51 \ bin". Sekarang tambahkan% JAVA_HOME% \ bin ke akhir jalur Anda.

4) jalur Anda akan terlihat seperti ini: C: \ Program Files (x86) \ Google \ google_appengine \; C: \ Users \ username \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Catatan: item yang disertakan dalam% 's seperti% M2% adalah variabel yang ditetapkan. Ini terlihat mubazir tapi perlu. Anda dapat mengonfirmasi bahwa semuanya berfungsi dengan mengetik:

java -version
javac -version
mvn -version

Masing-masing dari tiga pernyataan yang diketik di comman prompt seharusnya tidak mengembalikan kesalahan.

Flea yang menggeram
sumber
Langkah 2) tidak benar dan tidak perlu. Baik toolchain Java maupun Maven tidak memerlukan% JAVA_HOME% untuk berada dalam variabel "PATH". (Ini tidak akan melakukan nyata bahaya, tapi tidak baik baik.) Referensi - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C
0

menggunakan windows 10

Saya menghadapi masalah .. kemudian saya menghapus variabel JAVA_HOME sepenuhnya dan baru saja menambahkan% JAVA_HOME% \ bin di PATH lalu berhasil !!! untukku

Kode Spy
sumber
1
Thanks.It bekerja setelah menambahkan "/ bin" di akhir variabel Java_home
Rahul
-1

JDK telah mengganti lokasi java.exe antara 1.6 dan 1.7 !!!

Dalam kasus saya, saya menemukan bahwa JAVA_HOME untuk JDK harus menambahkan \ jre di akhir. File mvn bat mencari java.exe dan mencarinya di JAVA_HOME \ bin. Tidak ada untuk JDK 1.7; itu ada di JAVA_HOME \ jre \ bin. Di JDK 1.6 seperti IS di JAVA_HOME \ bin.

Semoga ini bisa membantu seseorang.

Brian Reinhold
sumber
1
Saya yakin ini tidak benar. Menurut Dokumentasi Resmi Oracle untuk Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ), dalam instalasi JDK, perintah "java" muncul di "JAVA_HOME \ bin" dan " JAVA_HOME \ jre \ bin ". Jika tidak demikian halnya dalam instalasi Anda, maka seseorang / sesuatu telah mengacaukannya!
Stephen C
Menarik. Itu tidak ada di direktori / bin saya, hanya saya / jre / bin. Mungkin saya perlu menginstal ulang JDK terbaru
Brian Reinhold
-1

Situasi saya sedikit berbeda.

  • JAVA_HOME disetel dengan benar ke poin 1.7
  • Proyek Maven lainnya bekerja / membangun dengan baik dengan 1,7 fitur.
  • PATH telah diatur dengan benar.
  • Semuanya up-to-date.

Proyek Maven baru saya yang sederhana masih belum berhasil. Apa yang saya perhatikan adalah perbedaan dalam log saat saya berlari mvn clean install. Untuk proyek Maven saya yang lebih lama, itu terlihat

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

Tetapi untuk proyek baru saya itu menunjukkan:

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

Jadi, saya melihat POM.xmldan memperhatikan hal ini di POM proyek lama:

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

Pada dasarnya, plugin ini memberi tahu versi kompiler mana yang akan digunakan untuk kompilasi. Baru saja menambahkannya ke proyek baru POM.xmldan semuanya berhasil.

Semoga bermanfaat bagi seseorang.

Bhushan
sumber
Ini bukan jawaban yang valid untuk pertanyaan ini. Gejalanya berbeda. Solusinya berbeda.
Stephen C
-1

Saya menggunakan Windows 7, masalah yang saya hadapi sederhana:

Saya memiliki ini untuk nilai variabel lingkungan JAVA_HOME saya:

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

bila diinginkan:

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

titik koma menyerang lagi!

:)

Beginilah cara saya memecahkan masalah ini, jadi ini harus menjadi salah satu solusi yang mungkin.

Alexander Mills
sumber