2012-08-23 2 views
7

La détermination du chemin correct pour JAVA_HOME est un peu complexe sur un système Ubuntucar il utilise des alternatives. Sur ma machine, voici comment les alternatives créent au moins deux niveaux d'indirection avant d'arriver au java ou au javac.Quel est le chemin correct pour JAVA_HOME sur un système Linux qui utilise des alternatives?

usr/bin/javac -> /etc/alternatives/ 

/etc/alternatives/java -> /usr/lib/jvm/jdk1.7/bin/javac 

Si je mets JAVA_HOME-/usr/lib/jvm/jdk1.7, alors il est possible que mon java système pourrait devenir incompatible avec la java pointée par JAVA_HOME, si je mets à jour des alternatives à utiliser une autre java.

Ma question est, quelle est la valeur correcte pour JAVA_HOME sur un système utilisant des alternatives. Je suis enclin à penser que JAVA_HOME doit être réglé sur /usr

De cette façon TOMCAT ou tout autre logiciel qui l'utilise, ajoutera « bin » à JAVA_HOME et trouver tous les executables dont il a besoin.

Est-ce la valeur correcte pour JAVA_HOME sur les systèmes utilisant des alternatives. Est-ce que la plupart des logiciels utilisent JAVA_HOME uniquement pour localiser les exécutables, ou utilisent-ils la valeur pour localiser d'autres artefacts (tels que le fil de politique de sécurité, etc.) qui sont livrés avec le JDK? Si le premier est vrai, alors je pense que nous pouvons utiliser /usr pour JAVA_HOME, mais si ce dernier est vrai, alors je pense que la seule façon d'utiliser correctement JAVA_HOME est de sacrifier la fonctionnalité des alternatives.

+0

Je viens de regarder mon système CentOS 5.5: 1) Je n'ai * pas * $ JAVA_HOME défini n'importe où dans mon environnement, 2) /etc/tomcat5/tomcat5.conf a cette ligne : 'JAVA_HOME ="/usr/lib/jvm/java "', 3)/usr/lib/jvm/java est un lien symbolique: 'java ->/etc/alternatives/java_sdk', 4)/etc/alternatives/java_sdk est également un lien symbolique: 'java_sdk ->/usr/lib/jvm/java-1.4.2-gcj'. – paulsm4

+0

Oui, j'ai 'default-java' sur Ubuntu au lieu de 'java' dans/usr/lib/jvm Donc, je suppose que l'astuce est de ne pas s'inquiéter des alternatives car il y a une couche supplémentaire entre les alternatives et Java. – Parag

Répondre

5

Bonne question - J'utilise des "alternatives" sur Linux et tout "fonctionne" - je n'ai jamais vraiment eu à y penser.

Je crois que c'est la réponse:

1) "alternatives" définit le lien symbolique à ce que votre Java "réel" est actuellement configuré à

2) Tout ce dont vous avez besoin t o do est défini $ JAVA_HOME sur le lien symbolique

+0

Sur quelle distribution est-ce? Je suis sur Debian, qui utilise des alternatives, et je n'ai pas de/usr/lib/jvm/default-java –

+0

Réponse intéressante. J'ai d'abord commencé ce commentaire avec une explication de pourquoi, ce que vous suggérez ne fonctionnera pas. Mais en y pensant plus, je crois comprendre ce que vous suggérez. Êtes-vous en train de dire que je devrais créer un répertoire 'default-java' et le symlinker avec le Java que je veux utiliser. Suite à cela, je devrais mettre à jour mon système de variantes pour pointer tous les binaires liés à Java à ceux de 'default-java/bin'. Cela permettra de résoudre le problème en ajoutant une couche supplémentaire entre les alternatives et Java – Parag

+0

Merci.J'étais un peu confus parce que j'avais dérangé avec mes alternatives, et les binaires java ne passaient plus par défaut-java – Parag

Questions connexes