Maven kann unter Windows nicht installiert werden: "JAVA_HOME ist auf ein ungültiges Verzeichnis eingestellt"


98

Ich habe das Maven-Tutorial genau befolgt, aber ich kann Maven immer noch nicht unter Windows installieren.

Wenn ich an der Eingabeaufforderung Folgendes ausführe:

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

Ich bekomme:

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

Ich navigierte zum Maven-Installationsordner und lief mvn --versionund bekam:

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

aber wenn ich renne java -versionbekomme ich:

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)

Also habe ich Java installiert. Weiß jemand was das Problem ist?

Antworten:


172

Die Probleme haben mit Ihren Pfaden zu tun.

  1. Stellen Sie sicher, dass sich das Verzeichnis "E: \ Java Resources \ Apache-Maven-2.2.0 \ Bin" in Ihrem Befehlssuchpfad befindet.

  2. Stellen Sie sicher , dass die Variable JAVA_HOME auf das bezieht sich Home - Verzeichnis für Ihre Java - Installation. Wenn Sie Java über "E: \ Sun \ SDK \ jdk \ bin" ausführen, muss die Variable JAVA_HOME auf "E: \ Sun \ SDK \ jdk" verweisen.

    NB: JAVA_HOME sollte NICHT mit "\ bin" 1 enden .

  3. Stellen Sie sicher, dass Sie kein JAK in die Variable JAVA_HOME 2 eingefügt haben .

    NB: JAVA_HOME sollte ein einzelner Verzeichnisname sein, keine "PATH-ähnliche" Liste von Verzeichnisnamen, die durch Semikolons getrennt sind.

Beachten Sie auch, dass Probleme auftreten können, wenn Sie diesen Hinweis in den Anweisungen von Maven unter Windows zu Leerzeichen in Schlüsselpfadnamen ignoriert haben .

"Maven kann, wie viele plattformübergreifende Tools, auf Probleme stoßen, wenn in wichtigen Pfadnamen Leerzeichen enthalten sind ."

"Sie müssen das Java SDK installieren (z. B. von der Download-Site von Oracle) und es unter einem Pfadnamen ohne Leerzeichen wie c: \ j2se1.6 installieren."

"Sie müssen die Maven-Distribution entpacken. Entpacken Sie sie nicht in der Mitte Ihres Quellcodes. Wählen Sie einen Ort ( ohne Leerzeichen im Pfad! ) Und entpacken Sie sie dort."

Die einfache Lösung hierfür wäre, Java oder Maven an einem anderen Ort neu zu installieren, damit im Pfad kein Leerzeichen vorhanden ist


1 - .... es sei denn, Sie haben eine verrückte Wahl für den Namen Ihres Installationsortes getroffen.

2 - Anscheinend besteht eine übliche "Voodoo" -Lösung für Windows-Pfadprobleme darin, am Ende ein Semikolon zu setzen. Es wird im Allgemeinen nicht empfohlen, funktioniert hier absolut nicht.


29

FEHLER: JAVA_HOME wird auf ein ungültiges Verzeichnis gesetzt. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Bitte setzen Sie die Variable JAVA_HOME in Ihrer Umgebung so, dass sie dem Speicherort Ihrer Java-Installation entspricht

JAVA_HOMEsollte auf eingestellt werden E:\Sun\SDK\jdk. PATHsollte eingestellt werden, um einzuschließen %JAVA_HOME%\bin.


13

Ich bin auf dieses Problem mit einer Grails-Installation gestoßen.

Das Problem war mein JAVA_HOME war c:\sun\jdk\und mein PATH hat%JAVA_HOME%bin

Ich habe es geändert in: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Danach hat es funktioniert.


10

Ich hatte das gleiche Problem und habe gerade das JAVA_HOME aktualisiert, das für mich funktioniert hat.

zuvor war es so: C: \ Programme \ Java \ jdk1.6.0_45 \ bin Nur den \ bin entfernt und es hat bei mir funktioniert.


4

Aufgrund von Sicherheitsbeschränkungen an meinem aktuellen Arbeitsplatz konnte ich auf meinem Windows-basierten PC keine Umgebungsvariablen festlegen.

Meine Problemumgehung bestand darin, die Datei mvn.bat von% M2% nach C: \ WINNT zu kopieren und Folgendes oben in die Batchdatei einzufügen:

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

Nicht die schönste Lösung, aber es funktioniert. Wenn jemand eine andere Möglichkeit oder Problemumgehung hat, bei der die Standard-Umgebungsvariablen nicht in das System eingestellt werden können, würde ich ihre Antwort begrüßen.


3

Ich hatte das gleiche Problem und keine der obigen Antworten hat es für mich behoben, da alle meine env-Variablen festgelegt waren. Ich hatte gerade mein Java neu installiert.

Was funktionierte war zu

  1. Gehe zu C:\path\to\apache-maven-3.0.4\binund öffne die mvn.batDatei.
  2. Finden Sie die Linie, die so aussieht @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Korrigieren Sie es auf den richtigen Weg

Ich weiß nicht, ob dies Windows-spezifisch ist, aber es könnte jemandem helfen!


2

Nach vielen fehlgeschlagenen Versuchen fand ich die Lösung

Es war der ";" am Ende von JAVA_HOME, das ich immer am Ende jeder neuen Variablen setze, die ich setze. Also loswerden von;

JAVA_HOME setzt es auch in der Benutzervariablen (natürlich ohne das ";")


1
"... was ich immer am Ende jeder neuen Variablen setze, die ich setze" - Warum würden Sie das tun?
Stephen C

1

Sie sollten JAVA_HOME oder MAVEN_HOME ohne bin-Verzeichnis festlegen, zum Beispiel: - JAVA_HOME = C: \ Programme (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Programme (x86) \ apache-maven-3.1.1 jetzt path = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin funktioniert korrekt


1

In Windows werden Leerzeichen in Pfaden manchmal nicht richtig erkannt

Wenn Sie ein Pfadproblem haben und der Pfad wie scheint

c:\Program Files\....

versuchen Sie es in einem alten DOS-Format wie zu ändern

"C:\Progra~1\...

Sie können verwenden dir /x, um die korrekte Syntax zu überprüfen (dritte Spalte)

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

In meinem PC ist JAVA_HOME (und es funktioniert)

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

In Windows 10 getestet


0

JAVA_HOME sollte wie folgt aussehen: C: \ PROGRA ~ 1 \ Java \ jdk

Hoffe das wird funktionieren!


0

Dies scheint ein alter Beitrag zu sein, aber ich wollte trotzdem mitteilen, wie dieses Problem für mich behoben wurde.

Für Benutzer, die keinen Administratorzugriff haben und eine Eingabeaufforderung öffnen, wird diese unter dem Benutzerrecht ausgeführt. Dies bedeutet, dass Sie möglicherweise einen Pfad wie C: \ Users \ haben

Wenn Sie also C: \ Users \ XYZ> mvn --version ausprobieren, wird der Pfad JAVA_HOME tatsächlich nach Benutzervariablen und nicht nach Systemvariablen in Umgebungsvariablen durchsucht.

Um dies zu beheben, müssen wir eine Umgebungsvariable für JAVA_HOME in Benutzervariablen erstellen.

Hoffe, das hilft jemandem.


Ermmm ... Die Umgebungsvariablen des Benutzers überschreiben die Systemumgebungsvariablen unter Windows. Wenn Sie eine System- und Benutzerumgebungsvariable mit demselben Namen haben, "gewinnt" die Benutzervariable und das, was die Anwendung sieht.
Stephen C

0

Wenn Sie Eclipse und Maven ausführen, müssen Sie zwei Pfadvariablen speichern, eine in Ihrem Speicherort jdk1.7_x_x_x und eine in Ihrem Speicherort jdk1.7_x_x_ \ bin. Wenn Sie Windows verwenden und sich in Ihren Umgebungsvariablen befinden, gehen Sie wie folgt vor:

1) Erstellen Sie eine USER-Variable namens JAVA_HOME. Zeigen Sie auf den Speicherort Ihrer JAVA-Datei. Zum Beispiel: "C: \ Programme \ Java \ jdk1.7.0_51" (Anführungszeichen entfernen)

2) Fügen Sie unter PATH% JAVA_HOME% an PATH an. Dadurch wird der Dateispeicherort aus Schritt 1 zu Ihrem PFAD hinzugefügt. Das ist gut für MAVEN

3) Wenn Sie Eclipse verwenden, muss der Pfad auf "C: \ Programme \ Java \ jdk1.7.0_51 \ bin" verweisen. Fügen Sie nun% JAVA_HOME% \ bin an das Ende Ihres Pfades an.

4) Ihr Pfad sollte ungefähr so ​​aussehen: C: \ Programme (x86) \ Google \ google_appengine \; C: \ Benutzer \ Benutzername \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Hinweise: Den Elementen, die in% wie% M2% enthalten sind, werden Variablen zugewiesen. Es sieht überflüssig aber notwendig aus. Sie können bestätigen, dass alles funktioniert, indem Sie Folgendes eingeben:

Java-Version Java-Version
MVN-
Version

Jede dieser drei in die Eingabeaufforderung eingegebenen Anweisungen sollte keine Fehler zurückgeben.


Schritt 2) ist falsch und unnötig. Weder in der Java-Toolchain noch in Maven muss% JAVA_HOME% in der Variablen "PATH" enthalten sein. (Es wird keinen wirklichen Schaden anrichten, aber auch nichts nützen.) Referenz - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C

0

mit Windows 10

Ich hatte ein Problem. Dann habe ich die Variable JAVA_HOME vollständig entfernt und % JAVA_HOME% \ bin in PATH hinzugefügt, dann hat es funktioniert !!! für mich


1
Danke. Es funktioniert nach dem Hinzufügen von "/ bin" am Ende der Java_home-Variablen
Rahul

-1

Das JDK hat die Positionen von java.exe zwischen 1.6 und 1.7 gewechselt !!!

In meinem Fall stellte ich fest, dass JAVA_HOME für das JDK am Ende das \ jre hinzufügen musste. Die mvn bat-Datei sucht nach java.exe und in JAVA_HOME \ bin. Es ist nicht für JDK 1.7 da; Es befindet sich in JAVA_HOME \ jre \ bin. In JDK 1.6 befindet es sich in JAVA_HOME \ bin.

Hoffe das hilft jemandem.


1
Ich glaube das ist falsch. Gemäß der offiziellen Oracle-Dokumentation für Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ) wird in einer JDK-Installation der Befehl "java" sowohl in "JAVA_HOME \ bin" als auch in " JAVA_HOME \ jre \ bin ". Wenn dies in Ihrer Installation nicht der Fall ist, hat jemand / etwas damit herumgespielt!
Stephen C

Interessant. Es befindet sich nicht in meinem Verzeichnis / bin, sondern nur in meinem Verzeichnis / jre / bin. Vielleicht muss ich das neueste JDK neu installieren
Brian Reinhold

-1

Meine Situation war etwas anders.

  • JAVA_HOME wurde richtig eingestellt, um auf 1.7 zu zeigen
  • Andere Maven-Projekte funktionierten / bauten gut mit 1.7 Funktionen.
  • PATH wurde richtig eingestellt.
  • Alles war auf dem neuesten Stand.

Mein einfaches neues Maven-Projekt funktionierte immer noch nicht. Was mir aufgefallen ist, war der Unterschied in den Protokollen, als ich lief mvn clean install. Für meine älteren Maven-Projekte hat es gezeigt

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

Aber für mein neues Projekt zeigte es:

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

Also schaute ich mir das an POM.xmlund bemerkte dieses Ding im POM des alten Projekts:

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

Grundsätzlich gibt dieses Plugin an, welche Compilerversion für die Kompilierung verwendet werden soll. Fügte es einfach zu den neuen Projekten hinzuPOM.xml und die Dinge funktionierten.

Hoffe, es ist nützlich für jemanden.


Dies ist keine gültige Antwort auf diese Frage. Die Symptome sind unterschiedlich. Die Lösung ist anders.
Stephen C

-1

Ich benutze Windows 7, das Problem, das ich hatte, war einfach:

Ich hatte dies für meinen JAVA_HOME-Umgebungsvariablenwert:

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

wenn es will:

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

Das Semikolon schlägt wieder zu!

:) :)

So habe ich dieses Problem gelöst, daher sollte dies eine mögliche Lösung sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.