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)
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.
ajouter un lien symbolique
Sudo ln -s /usr/lib/jvm/Java-7-Oracle /usr/lib/jvm/default-Java
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
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) )))
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.
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
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 cheminJava_HOME
.
C'est arrivé dans mon cas.
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.
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!!!
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.
Pour moi, le problème était un ensemble explicite sur la section des arguments de la configuration des outils externes dans Eclipse.
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.
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
Avant d'exécuter la commande, essayez d'entrer:
export Java_HOME="path_to_Java_home"
Où 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
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.)
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.