Gradle encuentra JAVA_HOME incorrecto a pesar de que está configurado correctamente

Cuando bash ejecutar gradle, aparece el siguiente error:

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

Sin embargo, cuando reviso la variable JAVA_HOME obtengo:

 # echo $JAVA_HOME /usr/lib/jvm/java-7-oracle 

Mi JAVA_HOME está definido en .bashrc y he verificado que esté configurado como fuente.

La ejecución de java -version también confirma que JAVA_HOME está configurado correctamente y está en la RUTA.

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

También he comprobado que /usr/bin/java symlinks a /etc/alternatives/java que a su vez se sincroniza correctamente con /usr/lib/jvm/java-7-oracle/jre/bin/java

Además, he comprobado que no hay definiciones duplicadas de JAVA_HOME en .bash_profile o /etc/profile .

Entonces mi pregunta es ¿cómo / por qué Gradle encuentra /usr/lib/jvm/default-java , y más importante aún, cómo lo señalo al directorio correcto?

Otros progtwigs que requieren el JDK funcionan bien, así que creo que es un problema de Gradle. También intenté reinstalar Gradle, lo que no hizo diferencia.

Estoy ejecutando Xubuntu de 64 bits (base Ubuntu 13.10)

Resulta que el particular binario de Gradle que descargué del repository de Ubuntu 13.10 intenta exportar JAVA_HOME. Gracias a Lucas por sugerir esto.

/usr/bin/gradle línea 70:

 export JAVA_HOME=/usr/lib/jvm/default-java 

Al comentar esta línea, se resuelve el problema y Gradle encuentra la ruta correcta al binario de Java.

Si solo descargas el binario de su sitio web , no tiene este problema. Es un problema con la versión del repository de Ubuntu. También parece haber algunos otros problemas con la versión 13.10.

agregar un enlace simbólico

 sudo ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java 

Para mí, este error se debió a la razón por la cual Gradle estaba instalado como sudo y yo estaba intentando como usuario predeterminado ejecutar Gradle.

Tratar:

 sudo gradle -version 

o

 sudo gradle -v 

La solución es hacer JAVA_HOME == dir por encima de bin donde javac vive como en

 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, así que finalmente encontré el contenedor por encima del javac real, así que haz esto

 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH 

arriba se puede simplificar y generalizar a

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

Intenta instalar la última versión de gradle ,

 sudo add-apt-repository ppa:cwchien/gradle sudo apt-get update sudo apt-get install gradle 

Si instalamos desde ubuntu repo, instalará la versión anterior (para mí fue gradle 1.4). En versiones anteriores, establece java home desde gradle como export JAVA_HOME=/usr/lib/jvm/default-java . La última versión no tiene este problema.

¿ JAVA_HOME su JAVA_HOME ? Sin exportar, la configuración no se propagará a los comandos iniciados dentro de ese shell. Además, java -version no usa JAVA_HOME , sino que usa la primera java encuentra en su ruta. Asegúrate de que tu .bashrc tenga el siguiente aspecto:

 JAVA_HOME=/path/to/java/home export JAVA_HOME 

Me enfrenté a este problema cuando ejecuto el siguiente comando en Ubuntu:

 ionic build android 

Para resolver este problema, hice los siguientes pasos:

 ln -sf /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java /usr/lib/jvm/default-java 

Agregue JAVA_HOME a / etc / environment:

 vi /etc/environment 

Añadir:

 JAVA_HOME="/usr/lib/jvm/default-java" 

Después de guardar, léalo:

 source /etc/environment 

Finalmente, puede ejecutar el comando de comstackción.

Tuve el mismo problema, pero no encontré el comando de exportación en la línea 70 en el archivo gradle para la última versión 2.13, pero entiendo un error tonto, es decir,

Si no encuentra la línea 70 con el comando de exportación en el archivo gradle en su carpeta gradle / bin /, entonces verifique su ~ / .bashrc, si encuentra export JAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64/bin/java , luego elimine /bin/java de esta línea, como JAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64 , y en ruta >>> en lugar de esta export PATH=$PATH:$HOME/bin:JAVA_HOME/ , se export PATH=$PATH:$HOME/bin:JAVA_HOME/bin/java . Luego ejecute source ~/.bashrc .

El motivo es que si revisa su archivo gradle, lo encontrará en la línea 70 (si no hay comando de exportación) o en la línea 75,

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

Eso significa que /bin/java ya está allí, por lo que debe restarse de la ruta JAVA_HOME .

Eso sucedió en mi caso.

Para mí, el problema fue un conjunto explícito en la sección de argumentos de la configuración de herramientas externas en Eclipse.

enter image description here

También puede ir a la carpeta bin dentro de la carpeta de instalación de gradle y corregir el parámetro JAVA_HOME en el archivo gradle.bat. En mi caso, mi JAVA_HOME se configuró en c: \ Archivos de progtwig \ java \ bin El JAVA_HOME en gradle.bat se configuró en% JAVA_HOME% \ bin \ java.exe.

Corregí el JAVA_HOME en gradle.bat y funcionó.

¡¡¡Gracias!!!

 sudo ln -s /usr/lib/jvm/java-7-oracle/jre /usr/lib/jvm/default-java 

Crea un enlace simbólico al directorio java predeterminado.

Puede encontrar su directorio java por

 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. 

Tuve un problema con esto también. Dice el directorio incorrecto cuando era correcto. Así que acabo de crear una variable local con el nombre JAVA_HOME omitiendo el final / bin / java. Funcionó bien para mí

En mi dockercontainer (siendo mínimo el problema de no encontrar java) fue que ese “which” no estaba instalado. Combinando un proyecto usando gradlew usó el cual en ./gradlew para encontrar Java que instaló que resolvió el problema.