2012-08-23 7 views
7

Determinare il percorso corretto per JAVA_HOME è un po 'complesso su un sistema Ubuntu perché utilizza alternative. Sulla mia macchina questo è il modo in cui le alternative creano almeno due livelli di riferimento indiretto prima di arrivare al java o javac vero e proprio.Qual è il percorso corretto per JAVA_HOME su un sistema Linux che utilizza alternative?

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

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

Se ho impostato JAVA_HOME-/usr/lib/jvm/jdk1.7, allora è possibile che il mio java sistema potrebbe diventare incoerente con il Java puntato da JAVA_HOME, se aggiorno alternative per utilizzare un altro java.

La mia domanda è, qual è il valore corretto per JAVA_HOME su un sistema che utilizza alternative. Sono propenso a pensare che JAVA_HOME deve essere impostato su /usr

In questo modo TOMCAT o qualsiasi altro software che lo utilizza, aggiungerà 'bin' per JAVA_HOME e trovare tutti gli eseguibili di cui ha bisogno.

È il valore corretto per JAVA_HOME su sistemi che utilizzano alternative. La maggior parte del software utilizza JAVA_HOME solo per individuare gli eseguibili oppure utilizza il valore per individuare altre risorse (come il file dei criteri di sicurezza, ecc.) Che vengono fornite in bundle con JDK? Se il primo è vero, allora penso che possiamo usare /usr per JAVA_HOME, ma se quest'ultimo è vero, allora penso che l'unico modo per usare correttamente JAVA_HOME sia sacrificando le funzionalità alternative.

+0

Ho appena guardato il mio sistema CentOS 5.5: 1) Io * non * ho $ JAVA_HOME definito ovunque nel mio ambiente, 2) /etc/tomcat5/tomcat5.conf ha questa linea : 'JAVA_HOME ="/usr/lib/jvm/java "', 3)/usr/lib/jvm/java è un link simbolico: 'java ->/etc/alternatives/java_sdk', 4)/etc/alternative/java_sdk è anche un link simbolico: 'java_sdk ->/usr/lib/jvm/java-1.4.2-gcj'. – paulsm4

+0

Sì, ho 'default-java' su Ubuntu invece di 'java' all'interno di/usr/lib/jvm Quindi, immagino che il trucco sia non preoccuparsi delle alternative perché c'è un altro livello tra le alternative e Java. – Parag

risposta

5

Buona domanda: uso "alternative" su Linux e tutto "funziona" - non ho mai dovuto pensarci.

Credo che questa sia la risposta:

1) "alternative" imposta il link simbolico a qualunque sia la vostra "reale" Java è attualmente configurato a

2) Tutto ciò che serve t o do è impostato $ JAVA_HOME sul link simbolico

+0

Su quale distro è presente? Sono su Debian, che usa delle alternative, e non ho una risposta/usr/lib/jvm/default-java –

+0

Interessante. Ho iniziato questo commento con una spiegazione del perché, quello che stai suggerendo non funzionerà. Ma come pensavo di più penso di capire quello che stai suggerendo. Stai dicendo che dovrei creare una directory 'default-java' e collegarla in modo simbolico al Java che voglio usare. Seguendo questo dovrei aggiornare il mio sistema alternativo per puntare tutti i binari relativi a Java a quelli in 'default-java/bin'. Questo risolverà il problema aggiungendo un altro strato tra le alternative e Java – Parag

+0

Grazie.Ero un po 'confuso perché avevo messo a soqquadro le mie alternative, e i binari java non stavano più passando per default-java – Parag