Passa tra più versioni java


65

Durante l'installazione di Android Studio su Ubuntu 14.04 ricevo il messaggio che la mia versione di Java ( javac 1.7.0_79) sta causando problemi. Ho trovato una soluzione su come installare una versione Oracle di Java più recente:

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Tuttavia temo che ciò possa sovrascrivere la mia open-jdkversione esistente di Java. Dal momento che non so quali dei miei programmi dipendono da Java, temo che ciò potrebbe causare l'arresto anomalo di questi altri programmi.

C'è un modo per assicurarsi apt-getche non sovrascriva il mio Java precedente? Fondamentalmente mi piacerebbe averli installati entrambi e poter passare da uno all'altro, a seconda della versione di cui ho bisogno.

Risposte:


83

Apt-get non sovrascriverà le versioni java esistenti.

Per alternare tra le versioni Java installate, utilizzare il update-java-alternativescomando

Elenca tutte le versioni java:

update-java-alternatives --list

Imposta la versione java come predefinita (richiede i permessi di root):

sudo update-java-alternatives --set /path/to/java/version

... dove /path/to/java/versionè uno di quelli elencati dal comando precedente (es /usr/lib/jvm/java-7-openjdk-amd64.).


Informazioni aggiuntive:

update-java-alternativesè uno strumento pratico che utilizza il sistema alternativo di Debian ( update-alternatives) per impostare un mucchio di collegamenti alla versione java specificata (ad es java. javac, ...).


1
Per me questo ha causato java -version a java8, ma JAVA_HOME era ancora impostato su 7 :(
Nenotlep

questo risolve anche il mio problema. @Nenotlep quello che ho fatto è stato modificare manualmente la variabile d'ambiente in .bashrc o / etc / environment
nuttynibbles,

update-java-alternativesnon era disponibile per me. Ho appena sostituito quel comando con update-alternatives java.
nofinator

@nofinator che riguarda solo l' javaeseguibile. Quale versione di Ubuntu usi?
danzel

1
@Nenotlep per cambiare JAVA_HOMEdevi eseguire il seguente comando: source /etc/environment
gennaio

48

Uso

sudo update-alternatives --config java

che elenca tutte le versioni installate con quella attiva attualmente contrassegnata e fornisce una finestra di dialogo per passare:

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

Uso

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

per impostare $JAVA_HOMEdalla versione attiva corrente


Come notato da @danzel alla risposta accettata, ciò influisce solo sull'eseguibile java, non sulle altre parti della configurazione. Utilizzare update-java-alternativesse disponibile.
Premek Brada,

5

Sulla base della risposta di @muet, ho scoperto che funzionava perfettamente:

Aggiungi questo a ~/.bashrc:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Aggiungi agli alias:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

Quindi è possibile passare all'interno della stessa shell usando solo: useJava7ouseJava8


per rendere permanenti gli alias è possibile inserirli in ~ / .bashrc, maggiori informazioni qui askubuntu.com/questions/17536/…
Konstantin Zyubin

E: Impossibile trovare il pacchetto oracle-java7-set-default
Prakash Pandey

SDKMAN è il modo inequivocabilmente più semplice per installare, utilizzare e passare da una versione java all'altra. Vedi qui: sdkman.io/usage.html
brianjohnsen

recentemente .bashrcexport JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
ho

3

Configurare Java

È possibile configurare la versione predefinita per l'uso nella riga di comando utilizzando update-alternatives, che gestisce i collegamenti simbolici utilizzati per comandi diversi.

sudo update-alternatives --config java

L'output sarà simile al seguente.

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

Press <enter> to keep the current choice[*], or type selection number:

Ora puoi scegliere il numero da utilizzare come predefinito. Questo può essere fatto anche per altri comandi Java, come il compilatore ( javac), il generatore di documentazione ( javadoc), lo strumento di firma JAR ( jarsigner) e altro. È possibile utilizzare il seguente comando, compilando il comando che si desidera personalizzare.

sudo update-alternatives --config command

Impostazione della JAVA_HOMEvariabile di ambiente

Molti programmi, come i server Java, utilizzano la variabile di ambiente JAVA_HOME per determinare la posizione di installazione di Java.

Copia il percorso dalla tua installazione preferita e quindi apri / etc / environment usando Sublime Text o il tuo editor di testo preferito.

sudo subl /etc/environment

Alla fine di questo file, aggiungi la seguente riga, assicurandoti di sostituire il percorso evidenziato con il tuo percorso copiato.

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Salvare e chiudere il file e ricaricarlo: source /etc/environment.
È ora possibile verificare se la variabile d'ambiente è stata impostata eseguendo il comando seguente: echo $JAVA_HOME. Questo restituirà il percorso che hai appena impostato.

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.