SDB:Impostare l'Ambiente Java da usare


Provato su openSUSE Articoli consigliati Articoli correlati
Icon-checked.png

Icon-manual.png Icon-help.png

Questo articolo spiega come usare update-alternatives per selezionare la versione di Java da usare con openSUSE, tra le versioni installate. È anche un riferimento per usare update-alternatives in altre situazioni; update-alternatives è infatti un modo comodo per impostare una funzionalità, applicazione o altro usata da un sistema GNU/Linux, scegliendola tra più opzioni disponibili, per cui openSUSE ne fa un ampio uso.

Selezionare Java con il sistema delle alternative

openSUSE e SUSE usano il sistema update-alternatives (man 8 update-alternatives) per impostare l'ambiente Java predefinito con cui lanciare (e sviluppare) le applicazioni scritte in Java, plugin per i browser web incluso. Di conseguenza /usr/bin/java è un link simbolico a /etc/alternatives/java, che punta al comando java predefinito per il tuo sistema:

$ readlink /usr/bin/java
/etc/alternatives/java
$ readlink /etc/alternatives/java # oppure readlink -f /usr/bin/java
/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/jre/bin/java

Visualizzare le impostazioni predefinite

Per visualizzare il dettaglio delle impostazioni di una modalità gestita da update-alternatives, usa il seguente comando (non è necessario essere root, ma allora si deve usare il percorso completo):

$ /usr/sbin/update-alternatives --display java
java - auto mode
  link currently points to /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java
/usr/lib64/jdk_Oracle/bin/java - priority 3
  slave java.1.gz: /usr/lib64/jdk_Oracle/man/man1/java.1.gz
  slave jre: /usr/lib64/jdk_Oracle/jre
  ...
  slave tnameserv: /usr/lib64/jdk_Oracle/bin/tnameserv
  slave tnameserv.1.gz: /usr/lib64/jdk_Oracle/man/man1/tnameserv.1.gz
/usr/lib64/jvm/jre-1.7.0-openjdk/bin/java - priority 17147
  slave java.1.gz: /usr/share/man/man1/java-java-1.7.0-openjdk.1.gz
  slave jre: /usr/lib64/jvm/jre-1.7.0-openjdk
  ...
  slave tnameserv: /usr/lib64/jvm/jre-1.7.0-openjdk/bin/tnameserv
  slave tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.7.0-openjdk.1.gz
Current 'best' version is '/usr/lib64/jvm/jre-1.7.0-openjdk/bin/java'.

Ad ogni diversa versione di java installata è assegnata una certa priorità, per cui il collegamento simbolico con il numero più alto è l'alternativa predefinita. Questa sarà anche l'alternativa corrente se non si sono apportate manualmente delle modifiche. In questo modo update-alternatives determina l'alternativa 'best'<tt>, come si vede nell'ultima riga del risultato del comando riportata qui sopra (in questo caso la versione <tt>'best'<tt> è la preimpostata ed è attualmente in uso, vedi la riga con <tt>link currently point...)

Impostare JRE/JDK

Per impostare l'Ambiente di esecuzione Java, o JRE, predefinito, avvia come root il seguente comando:

# update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                       Priority   Status
------------------------------------------------------------
* 0            /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java   17147     auto mode
  1            /usr/lib64/jdk_Oracle/bin/java              3         manual mode
  2            /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java   17147     manual mode

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

L'asterisco indica la scelta corrente, se si digita 1 dopo i due punti si ottiene:

Press enter to keep the current choice[*], or type selection number: 1   
update-alternatives: using /usr/lib64/jdk_Oracle/bin/java to provide /usr/bin/java (java) in manual mode.

Adesso readlink -f /usr/bin/java punta a /usr/lib64/jdk1.7.0_07/bin/java. E il collegamento simbolico è ora in stato di modalità "manuale" (manual mode), indipendentemente dal fatto che al link relativo alla modalità auto sia assegnata una priorità (Priority) più alta, per cui la selezione 1 è ore la macchina Java in uso. Infatti:

# update-alternatives --display java
java - manual mode
  link currently points to /usr/lib64/jdk_Oracle/bin/java
/usr/lib64/jdk_Oracle/bin/java - priority 3
  slave java.1.gz: /usr/lib64/jdk_Oracle/man/man1/java.1.gz
  slave jre: /usr/lib64/jdk_Oracle/jre
  ...
  slave tnameserv: /usr/lib64/jdk_Oracle/bin/tnameserv
  slave tnameserv.1.gz: /usr/lib64/jdk_Oracle/man/man1/tnameserv.1.gz
/usr/lib64/jvm/jre-1.7.0-openjdk/bin/java - priority 17147
  slave java.1.gz: /usr/share/man/man1/java-java-1.7.0-openjdk.1.gz
  slave jre: /usr/lib64/jvm/jre-1.7.0-openjdk
  ...
  slave tnameserv: /usr/lib64/jvm/jre-1.7.0-openjdk/bin/tnameserv
  slave tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.7.0-openjdk.1.gz
Current 'best' version is '/usr/lib64/jvm/jre-1.7.0-openjdk/bin/java'.

La versione 'best' è sempre jre-1.7.0-openjdk ma ora il collegamento simbolico a java e in "manual mode" e usa jdk_Oracle. Puoi tornare alla modalità automatica usando l'opzione --auto:

# update-alternatives --auto java
update-alternatives: using /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java to provide /usr/bin/java (java) in auto mode.

Per l'Ambiente di sviluppo Java, o JDK usa invece javac come argomento di update-alternatives.

Impostare il plugin Java

Il plugin Java si configura con l'argomento javaplugin (il link simbolico è infatti /usr/lib64/browser-plugins/javaplugin.so<tt>, senza <tt>64 su macchine a 32 bit). Il plugin predefinito si chiama IcedTeaPlugin.so ed è quello di IcedTea/openjdk (libnpjp2.so è quello fornito da Oracle (SUN) Java). Per modificare il plugin di default usa il comando:

# update-alternatives --config javaplugin
There are 2 choices for the alternative javaplugin (providing /usr/lib64/browser-plugins/javaplugin.so).

  Selection    Path                                             Priority   Status
------------------------------------------------------------
* 0            /usr/lib64/IcedTeaPlugin.so                       17106     auto mode
  1            /usr/lib64/IcedTeaPlugin.so                       17106     manual mode
  2            /usr/lib64/jdk_Oracle/jre/lib/amd64/libnpjp2.so   3         manual mode

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

L'asterisco indica la scelta corrente, se si digita 2 dopo i due punti si ottiene:

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib64/jdk_Oracle/jre/lib/amd64/libnpjp2.so to provide /usr/lib64/browser-plugins/javaplugin.so (javaplugin) in manual mode.

Collegamenti esterni

La pagina originale che ha fatto da matrice per questo articolo, sul Wiki openSUSE "old" in inglese