web-dev-qa-db-fra.com

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 le Java_HOME variable d'environnement, due à une politique debian .

J'écris 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 JVM qui est actuellement sélectionnée par update-alternatives?

96
Witek

Pour le JRE, quelque chose comme ça devrait faire l'affaire:

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

la solution de danadam peut facilement être adoptée pour récupérer le chemin JDK (c'est-à-dire pas JRE) comme requis:

Java_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Recherche javac Java (au lieu de Java) inclus dans JDK (mais pas JRE).
  • N'a pas de fin/(supprimé par sed s:/bin ... au lieu de s: bin ...)
44
rsaddey

export Java_HOME=$(dirname $(dirname $(readlink -f /usr/bin/Java)))

Dans .bashrc était pratique pour moi.

12
David

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

Sudo update-alternatives --config Java 
9
djangofan

J'ai installé Java avec

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

puis pour trouver l'emplacement

ls -al /etc/alternatives/Java
3
prule

Comme extension de danadams, répondez:

Tout d'abord, installez le 2e Java JRE comme 3e Java, avec une priorité de "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 encore besoin de définir les liens pour javaw et javac, etc., chacun est fait séparément.

2
djangofan

Si Java est configuré avec update-alternatives Ou a été ajouté à votre variable PATH manuellement, aucun "/usr/bin/Java" Codé en dur n'est nécessaire. J'utilise cette solution dans mon .bashrc:

export Java_HOME=$(readlink -m $(which Java)/../..)

1
Freddy

Il y a quelque temps, j'ai créé un tutoriel sur le forum Ubuntu sur la façon d'installer le dernier JRE/JDK à partir du site Web Java. Il explique également comment l'activer à l'échelle du système, en ajoutant le JRE/Emplacement JDK dans la variable PATH. Si vous le souhaitez, vous pouvez également ajouter Java_HOME au script, mentionné à la fin de la rubrique.

Découvrez-le: http://ubuntuforums.org/showthread.php?t=14371

1
EarthMind