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.

Kamoliddin
la source
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.

Eliah Kagan
la source
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