web-dev-qa-db-fra.com

Répertoire JAVA_HOME sous Linux

Existe-t-il une commande linux que je pourrais utiliser pour découvrir Java_HOME répertoire? J'ai essayé d'imprimer les variables d'environnement ("env") mais je ne trouve pas le répertoire.

60
Progress Programmer

echo $Java_HOME affichera la valeur si elle est définie. Toutefois, si vous ne l'avez pas défini manuellement dans vos scripts de démarrage, il ne l'est probablement pas.

Si tu essayes which Java et il ne trouve rien, Java peut ne pas être installé sur votre ordinateur, ou du moins ne se trouve pas sur votre chemin. Selon votre distribution Linux et le fait que vous avoir un accès root, vous pouvez aller à http://www.Java.com pour télécharger la version dont vous avez besoin, puis vous pouvez configurer Java_HOME pour qu'il pointe vers ce répertoire. Rappelez-vous qu'il s'agit simplement d'un convention et ne doit pas être utilisé pour déterminer si Java est installé ou non.

54
AdamC

Sous Linux, vous pouvez exécuter $(dirname $(dirname $(readlink -f $(which javac))))

Sur Mac, vous pouvez exécuter $(dirname $(readlink $(which javac)))/Java_home

Je ne suis pas sûr de Windows mais j'imagine where javac vous rapprocherait

73
jsdevel

Je sais que c'est tard, mais cette commande cherche dans le répertoire/usr/pour trouver Java pour vous

Sudo find /usr/ -name *jdk

Résultats à

/usr/lib/jvm/Java-6-openjdk
/usr/lib/jvm/Java-1.6.0-openjdk

Pour votre information, si vous êtes sur un Mac, Java_HOME se trouve actuellement à l'adresse

/System/Library/Frameworks/JavaVM.framework/Home

34
cevaris

Juste une autre solution, celle-ci est multi-plateforme (utilise Java) et vous indique l’emplacement du jre.

Java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'Java.home'

Affiche tous les paramètres actuels de Java et trouve celui qui s'appelle Java.home.

Pour Windows, vous pouvez utiliser findstr au lieu de grep.

Java -XshowSettings:properties -version 2>&1 | findstr "Java.home"
29
Parth Mehrotra

Pour afficher la valeur d'une variable d'environnement que vous utilisez:

echo $ VARIABLE

donc dans votre cas sera:

echo $ Java_HOME

Si vous ne l'avez pas configuré, vous pouvez ajouter dans votre .bashrc fichier:

export Java_HOME = $ (readlink -f/usr/bin/Java | sed "s: bin/Java ::")

et cela changera dynamiquement lorsque vous mettrez à jour vos paquets.

9
Paulo Fidalgo

Si $Java_HOME est défini dans votre environnement ...

$ echo $Java_HOME
$ # I am not lucky...

Vous pouvez le deviner à partir des classes qui sont chargées.

$ Java -showversion -verbose 2>&1 | head -1
[Opened /usr/lib/jvm/Java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar]

Cette méthode vous permet de trouver le bon jdk/jre utilisé au cas où il y aurait plusieurs installations.

Ou en utilisant strace:

$ strace -e open Java -showversion 2>&1 | grep -m1 /jre/
open("/usr/lib/jvm/Java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/AMD64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
8
dnozay

Sur le terminal, tapez:

echo "$ Java_HOME"

Si vous n'obtenez rien, votre variable d'environnement Java_HOME n'a pas été définie. Vous pouvez essayer d'utiliser "localiser Java" pour essayer de découvrir où se trouve votre installation de Java).

2

Avez-vous défini votre Java_HOME

  • Korn et bash shell: export Java_HOME = jdk-install-dir
  • Bourne Shell: rép_install_JDK = jdk; export Java_HOME
  • Shell C: setenv Java_HOME répertoire_installation_jdk
2
Nizar Grira

Voici une amélioration, en récupérant uniquement le répertoire sur stdout:

Java -XshowSettings:properties -version 2>&1 \
   | sed '/^[[:space:]]*Java\.home/!d;s/^[[:space:]]*Java\.home[[:space:]]*=[[:space:]]*//'
1
user246672

(dirname $(dirname $(readlink -e $(which Java))))

0
Arun Gopalpuri