Come posso modificare il valore di JAVA_HOME
in Ubuntu in modo che punti a Oracle Java?
Dovrebbe puntare a java-6-sun
o java-6-sun-1.6.0.24
?
Come posso modificare il valore di JAVA_HOME
in Ubuntu in modo che punti a Oracle Java?
Dovrebbe puntare a java-6-sun
o java-6-sun-1.6.0.24
?
Risposte:
Ho messo la linea:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
nel mio ~/.bashrc
file.
/usr/lib/jvm/java7-oracle
dovrebbe essere un collegamento simbolico che punta a /usr/lib/jvm/java-7-oracle-[version number here]
.
Il motivo per cui è un collegamento simbolico è che nel caso in cui sia presente una nuova versione di JVM, non è necessario aggiornare il .bashrc
file, dovrebbe puntare automaticamente alla nuova versione.
Se si desidera impostare JAVA_HOME
le variabili di ambiente a livello globale e a livello di sistema, l'uso deve essere impostato nel /etc/environment
file.
oracle-java7-set-default
faccia il pacchetto.
Se si desidera modificarlo a livello globale e a livello di sistema;
Nel
/etc/environment
aggiungi questa riga:
JAVA_HOME=/usr/lib/jvm/java-7-oracle
$JAVA_HOME
non si risolve se usato in questo modo PATH=$JAVA_HOME/bin
, ha provato a riavviare, nessun effetto. Devo export
o set
JAVA_HOME
in questo file o nel mio profilo?
per impostare il Java SE Development Kit di Oracle come predefinito Java del sistema, scarica qui l'ultimo Java SE Development Kit da qui, quindi crea una directory da qualche parte nel tuo file system, ad esempio /usr/java
ora estrai i file che hai appena scaricato in quella directory:
$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java
ora per impostare la JAVA_HOME
variabile di ambiente:
$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000
assicurati che java Oracle sia impostato come java predefinito:
$ update-alternatives --config java
ottieni qualcosa del genere:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /opt/java/jdk1.8.0_05/bin/java 20000 auto mode
1 /opt/java/jdk1.8.0_05/bin/java 20000 manual mode
2 /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java 1061 manual mode
Press enter to keep the current choice[*], or type selection number:
presta attenzione all'asterisco prima dei numeri a sinistra e se non è impostato quello corretto scegli quello corretto digitandone il numero e premendo invio. ora prova il tuo java:
$ java -version
se ottieni qualcosa come il seguente, sei a posto:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
si noti inoltre che potrebbe essere necessario il permesso di root o essere nel gruppo sudoers per poterlo fare. Ho testato questa soluzione sia su Ubuntu 12.04 che su Debian Wheezy e funziona in entrambi.
Se si desidera che questa variabile di ambiente sia disponibile per tutti gli utenti e all'avvio del sistema, è possibile aggiungere quanto segue a /etc/profile.d/java.sh (crearlo se necessario):
export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
Quindi in una corsa terminale:
sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
La mia seconda domanda è: dovrebbe indicare java-6-sun o java-6-sun-1.6.0.24?
Dovrebbe sempre puntare a java-7-oracle
quel link simbolico all'ultimo installato (supponendo che tu abbia installato Java dai repository Ubuntu e ora dal download disponibile su oracle.com).
java 6
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64
o java 7
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
Se stai eseguendo qualsiasi tipo di sviluppo, devi puntare al JDK (Java Development Kit). Altrimenti, è possibile puntare a JRE (Java Runtime Environment).
JDK contiene tutto ciò che JRE ha e altro ancora. Se stai solo eseguendo programmi Java, puoi puntare a JRE o JDK.
È necessario impostare in JAVA_HOME
base all'attuale Java che si sta utilizzando.
readlink
stamperà il valore di un collegamento simbolico per Java corrente e sed
lo adatterà alla directory JRE:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
Se vuoi impostare JAVA_HOME su JDK dovresti andare su una cartella in più:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
Se si desidera utilizzare una versione specifica di Java quando sono installati più JDK, l'impostazione di JAVA_HOME potrebbe non funzionare.
È necessario utilizzare sudo update-alternatives --config java
per impostare Java predefinito.
Fare riferimento a /ubuntu/121654/how-to-set-default-java-version .
Vedi questo ; correre
sudo update-java-alternatives --list
per elencare tutte le installazioni Java su una macchina per nome e directory, quindi eseguire
sudo update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]
per scegliere quale JRE / JDK usare.
Se si desidera utilizzare JDK / JRE diversi per ciascuna attività Java, è possibile eseguire alternative di aggiornamento per configurare un eseguibile java alla volta; puoi correre
sudo update-alternatives --config java[Tab]
per vedere i comandi Java che possono essere configurati (java, javac, javah, javaws, ecc.). E poi
sudo update-alternatives --config [javac|java|javadoc|etc.]
assocerà quel compito / comando Java a un particolare JDK / JRE.
Potrebbe inoltre essere necessario impostare JAVA_HOME per alcune applicazioni: da questa risposta è possibile utilizzare
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
per JRE o
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
per i JDK.
java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment