Problem:
Ich erhalte den Maven-Fehler "Die Java_HOME-Umgebungsvariable ist nicht korrekt definiert", wenn ich die Inno-Setup-Stapelverarbeitung durchführe. Ich kann jedoch auch außerhalb von Inno Setup erfolgreich ausgeführt werden (z. B. Befehlszeile, Batchdatei, Vbs). Ich bin ratlos, das Problem zu identifizieren.
Inno-Setup-Eingabeaufforderung:
C:\>mvn -version
The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE
Reguläre Eingabeaufforderung:
C:\>mvn -version
C:\
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T01:09:06+05:30)
Maven home: C:\Program Files\Apache-maven-3.5.0\bin\..
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_131\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", Arch: "AMD64", family: "windows"
Maven Befehl von InnoSetup:
[Files]
Source: "C:\@Setup\MavenInstaller.bat"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "{cmd}"; Parameters: "/C ""{tmp}\MavenInstaller.bat"""
Maven-Befehl aus der Batchdatei:
mvn archetype:generate -DgroupId=com.mycompany.mycomponent-DartifactId=%APPLICATION_NAME% -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Java_HOME einstellen
Überprüfen Sie, ob Java 1.8 installiert ist oder nicht. Falls nicht installiert, installieren Sie dasselbe und legen Sie Java HOME wie folgt fest.
SETX Java_HOME "C:\Program Files\Java\jdk1.8.0_131"
SETX -m Java_HOME "C:\Program Files\Java\jdk1.8.0_131"
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;C:\Program Files\Java\jdk1.8.0_131\bin;" /f
Danke vielmals.
Der Befehl SETX
ändert die aktuelle Umgebung nicht.
Wenn Sie die folgende Batchdatei ausführen:
setx AAA aaa
echo AAA=%AAA%
Es wird gedruckt
AAA=
Ihre Batchdatei ist also falsch. Sie müssen set
verwenden:
set AAA=aaa
Siehe Was ist der Unterschied zwischen SETX und SET bei Umgebungsvariablen in Windows .
Mein JDK ist unter C:\Program Files\Java\jdk1.8.0_144\
installiert.
Ich hatte Java_HOME= C:\Program Files\Java\jdk1.8.0_144\
, Eingestellt und diese Fehlermeldung wurde angezeigt:
The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE
Wenn ich Java_HOME
in C:\Program Files\Java\jdk1.8.0_144\jre
änderte, wurde das Problem behoben.
Ich bin nicht sicher, wie.
Im Folgenden finden Sie die beste Methode, um das Problem zu beheben. Überprüfen Sie Folgendes im Klassenpfad:
Stellen Sie sicher, dass die Java_HOME-Systemvariable bis jdk vorhanden sein muss, z. B. C:\Programme\Java\jdk1.7.0_80. Fügen Sie hier keine Bin an.
Weil MAVEN nach jre suchen wird, das sich unter C:\Programme\Java\jdk1.7.0_80 befindet
Legen Sie im Klassenpfad% Java_HOME%\bin fest.
Dann probieren Sie die Maven-Version.
Ich hoffe es wird helfen.
Ich habe die Java_HOME-Variable entfernt und nur die Pfad- und Klassenpfadvariablen beibehalten, indem ich sie auf jdk und jre verweise. Es hat für mich funktioniert.
Bei der Verwendung des Befehls " mvn clean package " unter Windows war das gleiche Problem aufgetreten
C:\Eclipse_workspace\my-sparkapp>mvn clean package
The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE
Ich habe dieses Problem durch Löschen der Java_HOME - Umgebungsvariablen aus Benutzervariablen/Systemvariablen behoben. Starten Sie dann den Laptop neu und setzen Sie anschließend die Java_HOME - Umgebungsvariable erneut.
Ich hoffe es wird dir helfen.
Das Festlegen des Java_HOME-Verzeichnisses über die Befehlszeile hat bei mir funktioniert!
Zuerst:
Java_HOME="C:\Program Files\Java\jdk1.8.0"
Oder :
export Java_HOME="C:\Program Files\Java\jdk1.8.0"
Dann versuche es:
mvn -version
um sicherzustellen, dass Sie nicht den gleichen Fehler erhalten. :)
Ich hatte das gleiche Problem, während meine Java_HOME-Systemvariable auf C:\Programme\Java\jdk1.8.0_171\bin zeigte und mein PATH-Eintrag nur aus% Java_HOME% bestand.
Ich habe meine Java_HOME-Variable geändert, um den bin-Ordner (C:\Programme\Java\jdk1.8.0_171) auszuschließen, und habe den bin-Ordner der System-PATH-Variablen hinzugefügt:
Ich hatte Probleme mit dem gleichen Thema, und die folgenden arbeiteten für mich.
Schritt 1: Überprüfen Sie Ihre Java_HOME-Einstellung. Es kann ungefähr so aussehen:
Java_HOME="/usr/libexec/Java_home"
Schritt 2: Aktualisieren Sie Java_HOME wie folgt:
$ vim .bash_profile
export Java_HOME=$(/usr/libexec/Java_home)
$ source .bash_profile
Schritt 3: Überprüfen Sie in einer neuen Shell, ob der Befehl Maven jetzt ordnungsgemäß funktioniert:
$ mvn -version
Wenn das Problem dadurch behoben wurde, erhalten Sie eine Antwort wie:
Apache Maven 3.0.3 (r1075438; 2011-03-01 01:31:09+0800)
Maven home: /usr/share/maven
Java version: 1.7.0_05, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.2", Arch: "x86_64", family: "mac"
Ich hatte das gleiche Problem unter Windows 7.
The Java_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: Java_HOME should point to a JDK not a JRE
Die Lösung erwies sich als sehr einfach - klicken Sie mit der rechten Maustaste auf die Befehlsaufforderung und wählen Sie "Als Administrator ausführen". Danach ist das Problem verschwunden)
Wenn alle guten und noch vor "Java_HOME" stehenden Dateien auf ein JDK - und kein JRE - Problem hinweisen sollten, überprüfen Sie einmal die Benutzervariablen Java config und Systemvariablen Java config. This löste mein Problem.
Unter Windows funktioniert es nicht, wenn sich im Pfad zu jdk ein Speicherplatz befindet ("C:\Programme\jdk"). Wenn wir jdk jedoch an einem Ort aufbewahren, an dem kein Speicherplatz vorhanden ist, funktioniert es einwandfrei wie ("C:\jdk")