2012-08-23 8 views
7

Ermitteln der richtigen Pfad für JAVA_HOME ist ein bisschen komplex auf einem Ubuntu System, weil es Alternativen verwendet. Auf meinem Rechner erstellen Alternativen mindestens zwei Dereferenzierungsstufen, bevor sie das eigentliche Java oder Java erreichen.Was ist der korrekte Pfad für JAVA_HOME auf einem Linux-System, das Alternativen verwendet?

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

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

Wenn ich JAVA_HOME-/usr/lib/jvm/jdk1.7 gesetzt ist, dann ist es möglich, dass mein System java inkonsistent werden könnte mit der Java von JAVA_HOME darauf, wenn ich Alternativen zu aktualisieren andere Java zu verwenden.

Meine Frage ist, was ist der korrekte Wert für JAVA_HOME auf einem System, das Alternativen verwendet. Ich bin geneigt zu glauben, dass JAVA_HOME sollte /usr

Auf diese Weise TOMCAT oder jede andere Software eingestellt werden, die es verwendet, wird ‚bin‘ zu JAVA_HOME anhängen und finden Sie alle ausführbaren Dateien die es braucht.

Ist dies der richtige Wert für JAVA_HOME auf Systemen, die Alternativen verwenden. Verwenden die meisten Programme JAVA_HOME nur, um die ausführbaren Dateien zu finden, oder würden sie den Wert verwenden, um andere Artefakte (wie die Sicherheitsrichtlinie fil usw.) zu finden, die im Lieferumfang des JDK enthalten sind? Wenn ersteres wahr ist, dann glaube ich, dass wir /usr für JAVA_HOME verwenden können, aber wenn letzteres wahr ist, dann denke ich, dass der einzige Weg, JAVA_HOME korrekt zu verwenden, darin besteht, die Alternativen-Funktionalität zu opfern.

+0

Ich sah nur auf meinem CentOS 5.5-System: 1) Ich habe * nicht * JAVA_HOME definiert irgendwo in meiner Umgebung, 2) /etc/tomcat5/tomcat5.conf hat diese Zeile : 'JAVA_HOME ="/usr/lib/jvm/java "', 3)/usr/lib/jvm/java ist ein Symlink: 'java ->/etc/alternatives/java_sdk', 4)/etc/alternatives/java_sdk ist auch ein Symlink: 'java_sdk ->/usr/lib/jvm/java-1.4.2-gcj'. – paulsm4

+0

Ja, ich habe 'default-java' auf Ubuntu anstelle von 'java' in/usr/lib/jvm Also, ich denke, der Trick ist, sich überhaupt keine Gedanken über Alternativen zu machen, da es zwischen Alternativen und Java noch eine weitere Ebene gibt. – Parag

Antwort

5

Gute Frage - Ich benutze "Alternativen" auf Linux und alles "funktioniert einfach" - ich musste nie wirklich darüber nachdenken.

Ich glaube, das ist die Antwort:

1) "Alternative" setzt den Symlink zu, was auch immer Ihre "echten" Java zur Zeit konfiguriert ist, zu

2) Alles was Sie brauchen t Setzen Sie $ JAVA_HOME auf den Symlink

+0

Auf welcher Distribution ist das? Ich bin auf Debian, die Alternativen verwendet, und ich habe keine/usr/lib/jvm/default-java –

+0

Interessante Antwort. Ich habe diesen Kommentar zuerst mit einer Erklärung begonnen, warum, was Sie vorschlagen, wird nicht funktionieren. Aber als ich darüber nachdachte, glaube ich zu verstehen, was Sie vorschlagen. Willst du damit sagen, dass ich ein 'default-java' Verzeichnis erstellen und es mit dem Java verbinden soll, das ich benutzen möchte? Danach sollte ich mein Alternativsystem aktualisieren, um alle Java-bezogenen Binärdateien auf diejenigen in 'default-java/bin' zu verweisen. Dies wird das Problem lösen, indem Sie eine weitere Schicht zwischen Alternativen und Java – Parag

+0

Danke hinzufügen.Ich war etwas verwirrt, weil ich mich mit meinen Alternativen herumgeschlagen hatte, und die Java-Binärdateien gingen nicht mehr durch default-java. – Parag

Verwandte Themen