Gradle descobre JAVA_HOME errado, embora esteja definido corretamente

Ao tentar executar o gradle, recebo o seguinte erro:

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

No entanto, quando eu verifico a variável JAVA_HOME eu recebo:

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

Meu JAVA_HOME está definido em .bashrc e verifiquei duas vezes se ele está definido como a origem.

A execução de java -version também confirma que JAVA_HOME está configurado corretamente e está no PATH.

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

Eu também verifiquei que /usr/bin/java links simbólicos para /etc/alternatives/java que por sua vez corretamente symlinks para /usr/lib/jvm/java-7-oracle/jre/bin/java

Além disso, verifiquei que não há definições JAVA_HOME duplicadas em .bash_profile ou /etc/profile .

Então, minha pergunta é como / por que Gradle encontra /usr/lib/jvm/default-java e, mais importante, como eu aponto para o diretório correto?

Outros programas que exigem que o JDK funcione bem, então eu acho que é uma questão Gradle. Eu também tentei reinstalar Gradle que não fez diferença.

Estou executando o Xubuntu de 64 bits (base do Ubuntu 13.10)

Acontece que o binário Gradle que baixei do próprio repository Ubuntu 13.10 tenta exportar JAVA_HOME. Obrigado ao Lucas por sugerir isso.

Linha /usr/bin/gradle 70:

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

Comentando esta linha para fora resolve o problema, e Gradle encontra o caminho correto para o binário Java.

Se você acabou de baixar o binário de seu site, ele não tem esse problema, é um problema com a versão do repository do Ubuntu. Também parece haver alguns outros problemas com a versão 13.10.

adicione um link simbólico

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

Para mim este erro foi devido à razão de Gradle como instalado como sudo e eu estava tentando como usuário padrão para executar Gradle.

Experimentar:

 sudo gradle -version 

ou

 sudo gradle -v 

A solução é tornar o JAVA_HOME == dir acima do bin onde o javac vive como em

 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 então finalmente encontrei o bin acima javac real para fazer isso

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

acima pode ser simplificado e generalizado para

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

Tente instalar a última versão do gradle ,

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

Se instalarmos a partir do repository do ubuntu, ele irá instalar a versão antiga, (para mim foi gradle 1.4). Na versão mais antiga, ele define java home a partir do gradle como export JAVA_HOME=/usr/lib/jvm/default-java . A versão mais recente não tem esse problema.

Você export seu JAVA_HOME ? Sem exportação, a configuração não será propagada para os comandos iniciados dentro desse shell. Além disso, o java -version não usa JAVA_HOME , mas usa o primeiro java encontrado em seu caminho. Certifique-se de que seu .bashrc algo como isto:

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

Eu enfrentei esse problema quando executei o seguinte comando no Ubuntu:

 ionic build android 

Para resolver esse problema, fiz os seguintes passos:

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

Adicione JAVA_HOME ao / etc / environment:

 vi /etc/environment 

Adicionar:

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

Depois de salvar, leia:

 source /etc/environment 

Finalmente, você pode executar o comando de compilation.

Eu tive o mesmo problema, mas eu não encontrei o comando de exportação na linha 70 no arquivo gradle para a última versão 2.13, mas eu entendo um erro bobo lá, que está seguindo,

Se você não encontrar a linha 70 com o comando de exportação no arquivo gradle em sua pasta gradle / bin /, verifique seu ~ / .bashrc, se você encontrar export JAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64/bin/java , em seguida, remover /bin/java desta linha, como JAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64 , e no caminho >>> em vez desta export PATH=$PATH:$HOME/bin:JAVA_HOME/ , será export PATH=$PATH:$HOME/bin:JAVA_HOME/bin/java . Em seguida, execute source ~/.bashrc .

O motivo é que, se você verificar seu arquivo gradle, você encontrará na linha 70 (se não houver um comando de exportação) ou na linha 75,

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

Isso significa que /bin/java já está lá, então ele precisa ser subtraído do caminho JAVA_HOME .

Isso aconteceu no meu caso.

Para mim, um conjunto explícito na seção de argumentos da configuração de ferramentas externas no Eclipse foi o problema.

insira a descrição da imagem aqui

Você também pode ir para a pasta bin dentro da pasta de instalação do gradle e corrigir o parâmetro JAVA_HOME no arquivo gradle.bat. No meu caso, meu JAVA_HOME foi definido como c: \ Arquivos de programas \ java \ bin O JAVA_HOME no gradle.bat foi definido como% JAVA_HOME% \ bin \ java.exe.

Eu corrigi o JAVA_HOME no gradle.bat e funcionou.

Obrigado!!!

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

Crie um link simbólico para o diretório java-default.

Você pode encontrar o seu diretório 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. 

Eu tive um problema com isso também. Ele disse diretório errado quando estava correto. Então eu acabei de criar uma variável local com o nome de JAVA_HOME omitindo o final / bin / java. Funcionou bem para mim.

No meu dockercontainer (sendo mínimo o problema de não encontrar o java) foi, que “o qual” não foi instalado. Complicando um projeto usando gradlew usado em ./gradlew para encontrar java Instalando o que resolveu o problema.