Come impostare Oracle Java come Java predefinito in Ubuntu?


134

Come posso modificare il valore di JAVA_HOMEin Ubuntu in modo che punti a Oracle Java?

Dovrebbe puntare a java-6-suno java-6-sun-1.6.0.24?

Risposte:


175

Ho messo la linea:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

nel mio ~/.bashrcfile.

/usr/lib/jvm/java7-oracledovrebbe 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 .bashrcfile, dovrebbe puntare automaticamente alla nuova versione.

Se si desidera impostare JAVA_HOMEle variabili di ambiente a livello globale e a livello di sistema, l'uso deve essere impostato nel /etc/environmentfile.


4
Oppure /usr/lib/jvm/java-1.6.0-openjdk-amd64 se stai usando OpenJDK invece di Oracle (Sun) JDK.
pm_labs,

7
Puoi usare export JAVA_HOME = / usr / lib / jvm / default-java /
noomz

@noomz Come si ottiene se default-java non esiste?
AHungerArtist,

@AHungerArtist Lo ottieni se installi openjdk o altri pacchetti Ubuntu ufficialmente supportati. Sfortunatamente, non è supportato per Oracle JDK utilizzando webupd8 / java ppa. In effetti, per me non è del tutto chiaro cosa oracle-java7-set-defaultfaccia il pacchetto.
Melvyn,

Dove lo metti nel file?
Czipperz,

166

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

27

@metdos la risposta sopra non è a livello globale o a livello di sistema?
Android Killer,

1
@AndroidKiller hai controllato il link sottolineato da Daniel Kullmann?
metdos,

@metdos Funziona bene, ma fare riferimento alle variabili non funziona per me ... $JAVA_HOMEnon si risolve se usato in questo modo PATH=$JAVA_HOME/bin, ha provato a riavviare, nessun effetto. Devo exporto set JAVA_HOMEin questo file o nel mio profilo?
Raffian,

@Raffian Non sono sicuro dei diversi casi angolari, in questo modo ha funzionato perfettamente per me, per maggiori informazioni ti consiglierei di leggere help.ubuntu.com/community/EnvironmentVariables
metdos

53

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/javaora 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_HOMEvariabile 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.


1
sì, questa soluzione è molto più pulita di quella accettata.
simone cittadini,

I commenti di @JayminGajjar che esprimono gratitudine non sono necessari. Il meccanismo di supporto di buone domande / risposte in questo sito Web è di votarle. Se non possiedi abbastanza reputazione per farlo ma hai abbastanza commenti, prova a includere alcune informazioni utili come su quale sistema e quale sistema operativo hai testato e trova questa soluzione funzionante ecc.
Barracuda

@Barracuda ho già votato, hai ragione riguardo alle informazioni, ha funzionato per me su Ubuntu 16.10 64 Bit Server OS :)
Jaymin Gajjar

20

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-oraclequel link simbolico all'ultimo installato (supponendo che tu abbia installato Java dai repository Ubuntu e ora dal download disponibile su oracle.com).


12

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


10

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. readlinkstamperà il valore di un collegamento simbolico per Java corrente e sedlo 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::")

7

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 javaper impostare Java predefinito.

Fare riferimento a /ubuntu/121654/how-to-set-default-java-version .


5

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.


Un altro approccio:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.