it-swarm.com.de

Gradle findet falsches Java_HOME, obwohl es richtig gesetzt ist

Beim Versuch, gradle auszuführen, erhalte ich die folgende Fehlermeldung:

# gradle

ERROR: Java_HOME is set to an invalid directory: /usr/lib/jvm/default-Java

Please set the Java_HOME variable in your environment to match the
location of your Java installation.

Wenn ich jedoch die Java_HOME-Variable überprüfe, erhalte ich Folgendes:

# echo $Java_HOME 
/usr/lib/jvm/Java-7-Oracle

Mein Java_HOME ist in .bashrc definiert und ich habe überprüft, ob es als Quelle festgelegt ist.

Das Ausführen von Java -version bestätigt auch, dass Java_HOME richtig eingestellt ist und sich im PATH befindet.

# Java -version
Java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

Ich habe auch überprüft, dass /usr/bin/Java sym auf /etc/alternatives/Java verweist, was wiederum korrekt auf /usr/lib/jvm/Java-7-Oracle/jre/bin/Java verweist.

Außerdem habe ich überprüft, dass es keine doppelten Java_HOME-Definitionen in .bash_profile oder /etc/profile gibt. 

Meine Frage ist also, wie/warum Gradle /usr/lib/jvm/default-Java findet und was noch wichtiger ist, wie kann ich es auf das richtige Verzeichnis verweisen? 

Andere Programme, für die das JDK erforderlich ist, funktionieren gut. Ich denke, es ist eine Gradle-Ausgabe. Ich habe auch versucht, Gradle erneut zu installieren, was keinen Unterschied machte.

Ich habe 64bit Xubuntu (Ubuntu 13.10 Basis)

149
James Barnett

Es stellt sich heraus, dass die bestimmte Gradle-Binärdatei, die ich aus dem Ubuntu 13.10-Repository selbst heruntergeladen habe, Java_HOME zu exportieren versucht. Danke an Lucas für diesen Vorschlag.

/usr/bin/gradle Zeile 70:

export Java_HOME=/usr/lib/jvm/default-Java

Wenn Sie diese Zeile auskommentieren, wird das Problem gelöst, und Gradle findet den richtigen Pfad zur Java-Binärdatei. 

Wenn Sie nur die Binärdatei von ihrer Website herunterladen hat dieses Problem nicht, Dies ist ein Problem mit der Ubuntu-Repo-Version. Es scheint auch einige andere Probleme mit der Version 13.10 zu geben.

249
James Barnett

fügen Sie einen symbolischen Link hinzu 

Sudo ln -s /usr/lib/jvm/Java-7-Oracle /usr/lib/jvm/default-Java
46
Shashi

Für mich war dieser Fehler auf den Grund Gradle als Sudo zurückzuführen, und ich versuchte als Standardbenutzer, Gradle auszuführen.

Versuchen:

Sudo gradle -version

oder

Sudo gradle -v
12
Jyoti Prakash

Die Lösung ist, Java_HOME == dir über bin zu machen, wo javac wie in lebt 

type javac

javac is /usr/bin/javac   # now check if its just a symlink

ls -la /usr/bin/javac 

/usr/bin/javac -> /etc/alternatives/javac   # its a symlink so check again

ls -la /etc/alternatives/javac  # now check if its just a symlink

/etc/alternatives/javac -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javac

OK, so fand ich schließlich den Behälter über dem eigentlichen Javac

export Java_HOME=/usr/lib/jvm/Java-8-openjdk-AMD64
export PATH=$Java_HOME/bin:$PATH

oben vereinfacht und verallgemeinert werden

which javac >/dev/null 2>&1 || die "ERROR: no 'javac' command could be found in your PATH"
export Java_HOME=$(dirname $(dirname $(readlink -f $(which javac)  )))
11
Scott Stensland

Versuchen Sie, die neueste Version von gradle zu installieren.

Sudo add-apt-repository ppa:cwchien/gradle

Sudo apt-get update

Sudo apt-get install gradle

Wenn wir von Ubuntu Repo installieren, wird die alte Version installiert (für mich war es Gradle 1.4). In der älteren Version wird Java von Gradle als export Java_HOME=/usr/lib/jvm/default-Java festgelegt. Die neueste Version hat dieses Problem nicht.

7
Mohammed Safeer

Haben Sie export Ihren Java_HOME? Ohne Export wird die Einstellung nicht an die Befehle weitergegeben, die in dieser Shell gestartet wurden. Außerdem verwendet Java -version nicht Java_HOME, sondern die erste Java in Ihrem Pfad. Stellen Sie sicher, dass Ihr .bashrc in etwa so aussieht:

Java_HOME=/path/to/Java/home
export Java_HOME
4
Lucas

Ich hatte das gleiche Problem, aber ich fand den Exportbefehl in Zeile 70 in der gradle-Datei für die neueste Version 2.13 nicht, aber ich verstehe dort einen dummen Fehler, der folgt: 

Wenn Sie Zeile 70 mit Exportbefehl in Gradle-Datei nicht im Gradle-Ordner/bin/finden, überprüfen Sie Ihre ~/.bashrc, wenn Sie export Java_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64/bin/Java finden. Entfernen Sie /bin/Java aus dieser Zeile wie Java_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64 und den Pfad> >> Statt dieses export PATH=$PATH:$HOME/bin:Java_HOME/ wird es export PATH=$PATH:$HOME/bin:Java_HOME/bin/Java sein. Führen Sie dann source ~/.bashrc aus.

Der Grund ist, wenn Sie Ihre Gradle-Datei überprüfen, finden Sie in Zeile 70 (wenn es keinen Exportbefehl gibt) oder in Zeile 75,

JAVACMD="$Java_HOME/bin/Java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: Java_HOME is set to an invalid directory: $Java_HOME

Das bedeutet, dass /bin/Java bereits vorhanden ist und daher vom Pfad Java_HOME abgezogen werden muss.

Das ist in meinem Fall passiert.

4
nothingSpecial

Dieses Problem trat auf, wenn ich den folgenden Befehl auf Ubuntu ausführte:

ionic build Android

Um dieses Problem zu lösen, habe ich folgende Schritte ausgeführt:

ln -sf /usr/lib/jvm/Java-7-openjdk-AMD64/jre/bin/Java /usr/lib/jvm/default-Java

Fügen Sie Java_HOME zu/etc/environment hinzu:

vi /etc/environment

Hinzufügen:

Java_HOME="/usr/lib/jvm/default-Java"

Nach dem Speichern lesen Sie es:

source /etc/environment

Zum Schluss können Sie den build-Befehl ausführen.

3
Agilox

Sie können auch in den Ordner bin im Installationsordner von Gradle gehen und den Parameter Java_HOME in der Datei gradle.bat korrigieren. In meinem Fall war mein Java_HOME auf c:\Programme\Java\bin Java_HOME gesetzt in gradle.bat wurde auf% Java_HOME%\bin\Java.exe gesetzt.

Ich habe Java_HOME in gradle.bat korrigiert und es hat funktioniert.

Vielen Dank!!!

2
asp_NewBee
Sudo ln -s /usr/lib/jvm/Java-7-Oracle/jre /usr/lib/jvm/default-Java

Erstellen Sie einen symbolischen Link zum Standard-Java-Verzeichnis.

Sie finden Ihr Java-Verzeichnis unter

readlink -f $(which Java) 
# outputs: /usr/lib/jvm/Java-7-Oracle/jre/bin/Java
# Remove the last `/bin/Java` and use it in above symbolic link command.
2
Venkat Kotra

Für mich war das Problem ein expliziter Satz im Argumentabschnitt der Konfiguration für externe Werkzeuge in Eclipse.

enter image description here

2

Ich hatte auch ein Problem damit. Es sagte falsches Verzeichnis, wenn es richtig war. Also habe ich gerade eine lokale Variable mit dem Namen Java_HOME erstellt, die das letzte/bin/Java weglässt. Es hat gut für mich funktioniert.

1
Bedrockbreaker

In meinem Ubuntu habe ich 2 Tage lang Kopfschmerzen bei diesem Problem.

Schritt 1. Geben Sie auf dem Terminal whereis Java ein, dann wird so etwas angezeigt

Java: /usr/bin/Java /etc/Java /usr/share/Java /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java /usr/share/man/man1/Java.1.gz

Schritt 2. Notieren Sie sich den Pfad: /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java

schließe den bin/Java aus

ihr Java_HOME = /usr/lib/jvm/Java-8-openjdk-AMD64

0
Las Lemieux

Geben Sie vor dem Ausführen des Befehls Folgendes ein:

export Java_HOME="path_to_Java_home"

Wobei path_to_Java_home der Ordner ist, in dem sich Ihr bin/Java befindet.

Wenn Java ordnungsgemäß installiert ist, können Sie den Speicherort mit dem folgenden Befehl ermitteln:

readlink -f $(which Java)

Vergessen Sie nicht, bin/Java vom Ende des Pfads zu entfernen, während Sie ihn in Java_HOME einfügen.

0
Jasper Kinoti

Wenn Ihre GRADLE_HOME- und Java_HOME-Umgebung ordnungsgemäß eingerichtet ist, überprüfen Sie Ihr JDK-Verzeichnis und stellen Sie sicher, dass sich unter dem Pfad Java.exe befindet.

C:\Program Files (x86)\Java\jdk1.8.0_181\bin

Als Fehler in der gradle.bat-Datei erwähnt

:findJavaFromJavaHome
set Java_HOME=%Java_HOME:"=%
set Java_EXE=%Java_HOME%/bin/Java.exe

if exist "%Java_EXE%" goto init

echo.
echo ERROR: Java_HOME is set to an invalid directory: %Java_HOME%
echo.
echo Please set the Java_HOME variable in your environment to match the
echo location of your Java installation.

Ihre Java-Installation kann nicht gefunden werden. Also finden und einstellen 

Java.exe

unter %Java_HOME%/bin wenn alles korrekt ist.

Dies funktioniert für mich (mein Konto wurde vom Client deaktiviert und der Administrator hat Java.exe aus meinem Verzeichnis entfernt.)

0
Harsh

[Windows] Wie bereits erwähnt, sieht es so aus, als würde .bat -file versuchen, Java.exe aus %Java_HOME%/bin/Java.exe zu finden, so dass es nicht gefunden wird, da bin zweimal im Pfad ..__ wiederholt wird. Entfernen Sie das zusätzliche /bin von gradle.bat. 

 Gradle

0
O95

In meinem Dockercontainer (da das Problem minimal war, Java nicht zu finden) war das "welche" nicht installiert. Durch die Komprimierung eines Projekts mit gradlew wurde in ./gradlew Java gefunden.

0
lem-fr