Question Comment déterminer JAVA_HOME sur Debian / Ubuntu?


Sur Ubuntu, il est possible d’avoir plusieurs JVM en même temps. Celui par défaut est sélectionné avec update-alternatives. Mais cela ne définit pas la JAVA_HOME variable d'environnement, due à une politique debian.

Je suis en train d'écrire un script de lancement (bash) qui démarre une application java. Cette application Java nécessite le JAVA_HOME variable d'environnement. Alors, comment obtenir le chemin de la machine virtuelle actuellement sélectionnée par update-alternatives?


90
2018-05-20 15:09


origine




Réponses:


Pour la JRE, quelque chose comme ceci devrait faire l'affaire:

JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

133
2018-05-20 17:55



J'avais besoin de la maison du JDK au lieu de la JRE, mais je l'ai obtenue avec: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed "s: bin / javac ::") Merci! - Witek
quand j'ai essayé la commande echo $(readlink -f /usr/bin/java | sed "s:bin/java::"), la sortie était /usr/lib/jvm/java-7-oracle/jre/ et pas /usr/lib/jvm/java-7-oracle/ - Sumit Ramteke
Code donné dans rsaddey fonctionne correctement - Sumit Ramteke


La solution de danadam peut facilement être adoptée pour récupérer le chemin JDK (c’est-à-dire pas JRE) selon les besoins:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Recherche le compilateur Java javac (au lieu de java) inclus dans JDK (mais pas JRE).
  • N'a pas de fin / (enlevé par sed s: / bin ... au lieu de s: bin ...)

43
2018-06-02 08:44





export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

Dans .bashrc était pratique pour moi.


12
2018-04-25 09:34





Donc, vous dites que cette commande ne fait rien pour vous?

sudo update-alternatives --config java 

9
2018-05-20 15:14



Est-ce que c'est supposé définir votre JAVA_HOME? J'ai constaté que update-java-alternatives est un meilleur moyen de mettre à jour Java, car update-alternatives ne met pas à jour toutes les alternatives liées à Java. Voir askubuntu.com/questions/141791 - James McMahon
C'est vrai, mais j'ai rencontré des instances de Linux qui proposaient update-alternatives mais sur lesquelles update-java-alternatives n'était pas installé. - djangofan


J'ai installé java avec

sudo apt-get install openjdk-7-jre-headless

et ensuite pour trouver l'emplacement

ls -al /etc/alternatives/java

3
2018-03-05 03:40





Dans le prolongement des danadams, répondez:

Tout d’abord, installez le 2nd Java JRE en tant que 3ème option Java, avec la priorité "3":

sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3

Ensuite, vous pouvez les lister:

update-alternatives --list java

Vous pouvez définir l’alternative à la main, en utilisant ceci:

sudo alternatives --config java /opt/IBM/java/jre/bin/java

Ensuite, votre script peut le définir à la volée, comme suit:

sudo alternatives --set java /opt/IBM/java/jre/bin/java
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Cela illustre mieux ce que fait la commande 'sed'. Bien que vous ayez toujours besoin de définir les liens pour javaw et javac, etc., également, chacun séparément.


2
2018-03-02 16:40





Il y a quelque temps, j'ai créé un tutoriel sur le forum Ubuntu sur la procédure d'installation de la dernière version du JRE / JDK à partir du site Web Java. Il explique également comment l'activer à l'échelle du système en ajoutant l'emplacement JRE / JDK à la variable PATH. Si vous le souhaitez, vous pouvez également ajouter JAVA_HOME au script, mentionné à la fin du sujet.

Vérifiez-le: http://ubuntuforums.org/showthread.php?t=1437100


1
2018-05-20 18:47