JAVA_HOME não está definido corretamente

14

Eu instalei o java jdk hotspot 1.7. Quando digito java -version, estou recebendo:

java version "1.7.0" 
Java(TM) SE Runtime Environment (build 1.7.0-b147)

Isto está certo.

E eu tentei instalar o maven e adicionei ao /etc/environmentarquivo:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
M2_HOME=/usr/local/apache-maven/apache-maven-3.0.4
MAVEN_HOME=/usr/local/apache-maven/apache-maven-3.0.4
M2=/usr/local/apache-maven/apache-maven-3.0.4/bin

Agora, quando digito mvn, estou recebendo:

Error: JAVA_HOME is not defined correctly.   We cannot execute
”/usr/lib/jvm/jdk1.7.0”/bin/java

No entanto, eu não estou colocando a marca "JAV_HOME var no arquivo de ambiente.

Está tentando fugir de

”/usr/lib/jvm/jdk1.7.0”/bin/java

caminho, na verdade deve ser

/usr/lib/jvm/jdk1.7.0/bin/java

Quando eu comando

$JAVA_HOME

Estou obtendo:

bash: ”/usr/lib/jvm/jdk1.7.0”: No such file or directory

Estou certo de que o caminho ( /usr/lib/jvm/jdk1.7.0) está correto.

Kamoliddin
fonte
Você pode fazer ls -al /usr/lib/jvme confirmar que 'jdk1.7.0' é o formato para o nome do diretório? Ao usar o Oracle, eles tendem a usar nomes de pastas estranhos
Thomas Ward
ls /usr/lib/jvm/java-7e ls "/usr/lib/jvm/java-7"/binrendimento, e deve produzir o mesmo resultado para mim (que não está vazio). A última parte, java-7, é o resultado de uma modificação manual - ela pode e será um pouco diferente para você. Verifique se essa pasta existe (jdk1.7.0).
usuário desconhecido
Eu tenho total 44 drwxr-xr-x 3 root root 4096 Jun 28 01:57 . drwxr-xr-x 184 root root 36864 Jun 28 01:34 .. drwxr-xr-x 10 root root 4096 Jun 27 23:30 jdk1.7.0 após a execução deste ls -al /usr/lib/jvm comando
Kamoliddin
Note-se que para ver uma variável no seu console, você é esperado para digitar: echo $VARNAME. Se você fizer $VARNAMEisso, ele executará o que está nessa variável.
Alexis Wilke #

Respostas:

15

JAVA_HOMEdeve ser definido como o nome do diretório que contém o bindiretório que contém os executáveis ​​Java (em particular, javaele próprio).

Supondo que você tenha um /usr/lib/jvm/jdk1.7.0diretório, ele provavelmente contém um jresubdiretório que contém o bindiretório que contém javae executáveis ​​relacionados.

Então você provavelmente deveria estar definindo JAVA_HOMEpara /usr/lib/jvm/jdk1.7.0/jree não /usr/lib/jvm/jdk1.7.0.

Eliah Kagan
fonte
A instalação de um JDK, não apenas o JRE, geralmente leva a um diretório JDK que contém um diretório dir, e também a um diretório JRE, que continha um diretório dir. Mas JAVA_HOMEsempre foi definido para o diretório pai, não para o jrediretório
usuário desconhecido
Interessante, eu preciso configurá-lo como jdk no? Estou indo para escrever código em Java, compilação, implantar, etc ..
Kamoliddin
@ Kamoliddin Se o Maven estiver usando $JAVA_HOMEpara saber onde estão javace outros binários de desenvolvimento, sim, será necessário defini-lo como o jdkdiretório que contém o bindiretório que contém esses binários.
Eliah Kagan
Obrigado, não sei, funcionou após o reinício, acho que não preciso reiniciar para que as alterações sejam aplicadas. Eu não mudei nada. Funcionou.
264 Kamoliddin
Não sei por que ele usando o jdk1.7.0. /usr/lib/jvm/javaDeve ser suficiente para ambos javae javac. Alternativas cuida disso
Brian