web-dev-qa-db-fra.com

Gradle trouve le mauvais Java_HOME même s'il est correctement défini

En essayant d'exécuter gradle, j'obtiens l'erreur suivante:

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

Cependant, lorsque je vérifie la variable Java_HOME, je reçois:

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

Mon Java_HOME est défini dans .bashrc et j'ai vérifié qu'il était défini comme source.

L'exécution de Java -version confirme également que Java_HOME est défini correctement et se trouve sur le chemin d'accès.

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

J'ai également vérifié que /usr/bin/Java liens symboliques vers /etc/alternatives/Java qui à son tour correctement des liens symboliques vers /usr/lib/jvm/Java-7-Oracle/jre/bin/Java

De plus, j'ai vérifié qu'il n'y avait pas de définitions Java_HOME en double dans .bash_profile ou /etc/profile

Ma question est donc de savoir comment/pourquoi Gradle trouve /usr/lib/jvm/default-Java et, plus important encore, comment le diriger vers le bon répertoire? 

D'autres programmes nécessitant le JDK fonctionnent bien, donc je pense que c'est un problème de Gradle. J'ai également essayé de réinstaller Gradle sans faire de différence.

J'utilise Xubuntu 64 bits (base Ubuntu 13.10)

149
James Barnett

Il s'avère que le binaire Gradle que j'ai téléchargé à partir du référentiel Ubuntu 13.10 même essaie d'exporter Java_HOME. Merci à Lucas pour cette suggestion.

/usr/bin/gradle ligne 70:

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

Commenter cette ligne résout le problème et Gradle trouve le chemin correct vers le binaire Java. 

Si vous venez de télécharger le fichier binaire à partir de leur site Web , le problème ne se pose pas. Il semble également y avoir d'autres problèmes avec la version 13.10.

249
James Barnett

ajouter un lien symbolique 

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

Pour moi, cette erreur était due à la raison Gradle as installé en tant que Sudo et j’essayais, par défaut, d’exécuter Gradle.

Essayer:

Sudo gradle -version

ou

Sudo gradle -v
12
Jyoti Prakash

La solution est de faire Java_HOME == dir au-dessus de bin où javac vit comme dans 

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 donc finalement trouvé la corbeille ci-dessus javac réelle alors faites-le

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

ci-dessus peut être simplifié et généralisé à

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

Essayez d’installer la dernière version de gradle,

Sudo add-apt-repository ppa:cwchien/gradle

Sudo apt-get update

Sudo apt-get install gradle

Si nous installons à partir d’ubuntu repo, il installera l’ancienne version (pour moi c’était la version 1.4). Dans les versions plus anciennes, Java Home from gradle est défini comme export Java_HOME=/usr/lib/jvm/default-Java. La dernière version n'a pas ce problème.

7
Mohammed Safeer

Avez-vous export votre Java_HOME? Sans exportation, le paramètre ne sera pas propagé aux commandes lancées à l'intérieur de ce shell. De plus, Java -version n'utilise pas Java_HOME, il utilise plutôt la première Java trouvée dans votre chemin. Assurez-vous que votre .bashrc ressemble à ceci:

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

J'ai eu le même problème, mais je n'ai pas trouvé de commande d'exportation à la ligne 70 dans le fichier Gradle pour la dernière version 2.13, mais je comprends une erreur stupide, à la suite, 

Si vous ne trouvez pas la ligne 70 avec la commande export dans le fichier gradle dans votre dossier gradine/bin /, vérifiez votre ~/.bashrc, si vous trouvez export Java_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64/bin/Java, puis supprimez /bin/Java de cette ligne, comme Java_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64, et entrez chemin> >> Au lieu de ce export PATH=$PATH:$HOME/bin:Java_HOME/, ce sera export PATH=$PATH:$HOME/bin:Java_HOME/bin/Java. Puis lancez source ~/.bashrc.

La raison en est que si vous vérifiez votre fichier de classement, vous le trouverez à la ligne 70 (s’il n’ya pas de commande d’exportation) ou à la ligne 75,

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

Cela signifie que /bin/Java est déjà présent, il doit donc être soustrait du chemin Java_HOME.

C'est arrivé dans mon cas.

4
nothingSpecial

J'ai rencontré ce problème lorsque j'exécutais la commande suivante sur Ubuntu:

ionic build Android

Pour résoudre ce problème, j'ai suivi les étapes suivantes:

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

Ajoutez Java_HOME à/etc/environment:

vi /etc/environment

Ajouter:

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

Après avoir sauvegardé, lisez-le:

source /etc/environment

Enfin, vous pouvez exécuter la commande de construction.

3
Agilox

Vous pouvez également accéder au dossier bin du dossier d'installation de Gradle et corriger le paramètre Java_HOME dans le fichier gradle.bat . Dans mon cas, mon Java_HOME était défini sur c:\Program files\Java\bin. dans gradle.bat a été défini sur% Java_HOME%\bin\Java.exe.

J'ai corrigé le Java_HOME dans gradle.bat et cela a fonctionné.

Je vous remercie!!!

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

Créez un lien symbolique vers le répertoire par défaut Java.

Vous pouvez trouver votre répertoire Java en

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

Pour moi, le problème était un ensemble explicite sur la section des arguments de la configuration des outils externes dans Eclipse.

enter image description here

2
Aneesh Vijendran

J'ai eu un problème avec ça aussi. Il a dit mauvais répertoire quand il était correct. Je viens donc de créer une variable locale portant le nom Java_HOME en omettant le fichier final/bin/Java. Cela a bien fonctionné pour moi.

1
Bedrockbreaker

Dans mon Ubuntu, j'ai mal à la tête pendant 2 jours sur cette question.

Étape 1. Tapez sur le terminal whereis Java puis il affichera quelque chose comme ceci

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

Étape 2. Prenez note du chemin: /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java

exclure le bin/Java

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

0
Las Lemieux

Avant d'exécuter la commande, essayez d'entrer:

export Java_HOME="path_to_Java_home"

path_to_Java_home est le dossier où se trouve votre bin/Java.

Si Java est correctement installé, vous pouvez trouver son emplacement en utilisant la commande suivante:

readlink -f $(which Java)

N'oubliez pas de supprimer bin/Java de la fin du chemin tout en le mettant dans Java_HOME

0
Jasper Kinoti

Si votre environnement GRADLE_HOME et Java_HOME sont configurés correctement, vérifiez votre répertoire JDK et assurez-vous que vous avezJava.exefichier sous le chemin sous.

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

Comme erreur mentionnée dans le fichier gradle.bat

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

Il est impossible de localiser votre installation Java. Donc, trouver et définir 

Java.exe

sous %Java_HOME%/bin si tout est correct.

Cela fonctionne pour moi (mon compte a été désactivé par le client et leur administrateur a supprimé Java.exe de mon répertoire.)

0
Harsh

[Windows] Comme déjà dit, il semble que .bat -file essaie de trouver Java.exe à partir de %Java_HOME%/bin/Java.exe afin de ne pas le trouver car bin est répété deux fois dans chemin . Supprimez ce /bin supplémentaire dans gradle.bat. 

 Gradle

0
O95

Dans mon dockercontainer (étant minime le problème de ne pas trouver Java) était celui "qui" n’était pas installé. Comipling un projet en utilisant gradlew utilisé lequel dans ./gradlew pour trouver Java Installation qui a résolu le problème.

0
lem-fr