[RESOLVIDO] Erro de JAVA_HOME executar o MAVEN

olá, pessoal

ao tentar executar o maven recebo o seguinte erro:

   ~ $ mvn -verison
   Error: JAVA_HOME is not defined correctly.
   We cannot execute /usr/lib/jvm/jdk1.8.0_141/bin/java

mas acho que o valor da minha JAVA_HOME está correto:

~ $ echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_141

ou não está?
e as últimas linhas do meu arquivo .bashrc são:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_141
export PATH=$JAVA_HOME/jre/bin:$PATH

e a minha versão do Java

~ $ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

meu ambiente é Linux Mint 18.2 XFCE

Tente declarar no /etc/environment (sem o export)

JAVA_HOME=/usr/lib/jvm/jdk1.8.0_141

Salve e feche o arquivo

source /etc/environment
1 curtida

adicionei ao final de /etc/environment, salvei e fechei

JAVA_HOME="/usr/lib/jvm/jdk1.8.0_141"

Abri outra sessão do terminal, mas o maven continua continua não rodando!

Execute javac -version. Qual é o retorno?

raphaeloneves:

~ $ javac -version
The program 'javac' can be found in the following packages:
* default-jdk
* ecj
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
* openjdk-9-jdk-headless
Try: sudo apt install <selected package>

Troque o

export PATH=$JAVA_HOME/jre/bin:$PATH

Por

export PATH=$JAVA_HOME/bin:$PATH

O JRE que vem dentro do JDK serve apenas para você distribuir junto com sua aplicação caso queira depender dessa versão específica do Java
No PATH basta incluir o JAVA_HOME/bin para poder usar todos os programas de linha de comando. :slight_smile:

staroski, o final do meu .bashrc ficou assim:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_141
export PATH=$JAVA_HOME/bin:$PATH

salvei e fechei, mas o maven ainda não roda!

~ $ mvn -verison
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/lib/jvm/jdk1.8.0_141/bin/java

meu PATH:

echo $PATH /usr/lib/jvm/jdk1.8.0_141/bin:/home/rafael/bin:/home/rafael/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Onde vc declarou o M2_HOME?

DarkElf, não declarei M2_HOME.
É necessário? Se sim, aonde devo declarar então?

obrigado!

Não precisa declarar o M2_HOME. Ele teria dado command not found se o mvn não estivesse “visível”, ou seja, ele já reconheceu o path do Maven.
Pela sua saída do javac, vc está sem um compilador instalado. Execute:

sudo apt-get install oracle-java8-set-default

Rode novamente o javac

arrumei o javac:

 update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_144/bin/javac 100

agora ele já é reconhecido:

~ $ javac -version
 javac 1.8.0_144

mas nada de rodar o maven até agora :tired_face:

   ~ $ mvn -verison
   Error: JAVA_HOME is not defined correctly.
   We cannot execute /usr/lib/jvm/jdk1.8.0_141/bin/java

Opa, blz??

Não uso linux, mas no Windows eu preciso declarar a variavel de ambiente “JAVA_HOME” apontando para o JDK “C:\Program Files\Java\jdk1.8.0_121”…

Se tu declarar isso no linux, apontando para o JDK não funciona?

Espero ter ajudado em algo.

Abraço!

Relendo seu tópico, esta solução do @staroski é a mais adequada pro problema. Vc está declarando o PATH errado.

Percebeu que o seu JDK é versão 1.8.0_144 e o maven está dizendo que o JAVA_HOME aponta para a pasta de um JDK versão 1.8.0_141?
O maven deve ter um arquivo de configuração onde o JAVA_HOME está setado para um caminho que não existe.
Descubra que arquivo é esse e tire fora a linha onde ele seta o JAVA_HOME, ou atualize para o caminho correto.

staroski, tinha razão, pesquisei por “jdk1.8.0_141” e o resultado foi esse!

`$ grep -r "jdk1.8.0_141" /
/home/rafael/.bashrc:export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_141

ou seja, eu quem estava setando errado o valor de JAVA_HOME errado desde o começo! :sweat_smile:

agora arrumei .bashrc:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH

e deu certo

 ~ $ mvn -version
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk1.8.0_144/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.8.0-53-generic", arch: "amd64", family: "unix"

obrigado!

1 curtida

Pessoal, estou com o mesmo problema só que no Windows, segue abaixo as minhas configurações se alguém puder me ajudar agradeço.

image

quando vc executa o comando mvn -version qual é a saída?

a mensagem é clara, falta configurar sua variável de ambiente JAVA_HOMA e fazê-la apontar para local onde está a pasta jdk1.8.0_144

Caro Rafael se puder me dizer para qual destes caminho devo apontar, fico grato.