JAVA_HOME n'est pas défini correctement


14

J'ai installé java jdk hotspot 1.7. Quand je tape, java -versionje reçois:

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

C'est correct.

Et j'ai essayé d'installer maven, et j'ai ajouté au /etc/environmentfichier:

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

Maintenant, lorsque je tape mvn, je reçois:

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

Cependant, je ne mets pas "mark for JAV_HOME var dans le fichier d'environnement.

Il essaie de fuir

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

chemin, En fait, il devrait être

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

Quand je commande

$JAVA_HOME

Je reçois:

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

Je suis sûr que le chemin ( /usr/lib/jvm/jdk1.7.0) est correct.


Pouvez-vous faire un ls -al /usr/lib/jvmet confirmer que «jdk1.7.0» est le format du nom de répertoire? Lorsqu'ils utilisent Oracle, ils ont tendance à utiliser des noms de dossiers étranges
— Thomas Ward

ls /usr/lib/jvm/java-7et ls "/usr/lib/jvm/java-7"/bindonner, et devrait donner le même résultat pour moi (qui n'est pas vide). La dernière partie, java-7, est le résultat d'une modification manuelle - elle peut et sera un peu différente pour vous. Vérifiez qu'un tel dossier existe (jdk1.7.0).
— utilisateur inconnu

J'ai eu 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 après avoir exécuté cette ls -al /usr/lib/jvm commande
— Kamoliddin

Notez que pour voir une variable dans votre console, vous attend à taper: echo $VARNAME. Si vous le faites, $VARNAMEil exécutera le contenu de cette variable.
— Alexis Wilke

Réponses:


15

JAVA_HOMEdoit être réglé sur le nom du répertoire qui contient le binrépertoire qui contient les exécutables Java (en particulier, javalui - même).

En supposant que vous ayez un /usr/lib/jvm/jdk1.7.0répertoire, il contient probablement un jresous-répertoire qui contient le binrépertoire qui contient javaet les exécutables associés.

Donc , vous devriez probablement installerez JAVA_HOMEà /usr/lib/jvm/jdk1.7.0/jreplutôt que /usr/lib/jvm/jdk1.7.0.


L'installation d'un JDK, et pas seulement du JRE, mène généralement à un répertoire JDK contenant un répertoire bin, ainsi qu'un répertoire JRE, qui contenait lui-même un répertoire bin. Mais JAVA_HOMEa toujours été défini sur le répertoire parent, pas sur le jrerépertoire.
— utilisateur inconnu

Intéressant, je dois le régler sur jdk non? Je vais écrire du code en java, compiler, déployer, etc.
— Kamoliddin

@Kamoliddin Si Maven utilise $JAVA_HOMEpour savoir où se trouvent les javacautres fichiers binaires de développement, alors oui, vous devrez le définir sur le jdkrépertoire contenant le binrépertoire contenant ces fichiers binaires.
— Eliah Kagan

Merci, je ne sais pas, cela a fonctionné après le redémarrage, je pense que je n'ai pas besoin de redémarrer pour que les modifications soient appliquées. Je n'ai rien changé. Ça a marché.
— Kamoliddin

Je ne sais pas pourquoi il utilise jdk1.7.0 .. /usr/lib/jvm/javadevrait suffire pour les deux javaet javac. Alternatives s'en charge
— Brian
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.