Come impostare la versione Java predefinita?


125

Ho seguito tutte le istruzioni indicate in questa domanda , ma sto riscontrando alcuni problemi con l'ultima parte di essa.

In realtà ho la versione 6.22 di Java e vorrei aggiornare alla versione 6.30.

Quindi, dopo aver spostato la directory estratta java-6-oraclein /usr/lib/jvmnon so cosa fare, poiché lo script indicato nella risposta sopra si aggiorna da java 5 a java 6.

Per motivi di chiarezza qui viene emesso se faccio un lsin dir /usr/lib/jvm:

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

Cosa dovrei fare ora?


PARTE AGGIUNTA

Sotto il suggerimento di @fossfreedom ho eseguito comunque lo script e in realtà ha aggiornato la versione java.

Infatti se eseguo l' java -versionoutput del comando sarà il seguente:

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

C'è ancora un problema , se Irun javac -versionmi dà la vecchia versione installata:

$ javac -version
javac 1.6.0_22

E se uso il tester su questo link , mi dirà che è la versione

Java Version 1.6.0_22 from Sun Microsystems Inc.

Cosa non va?

Sembra che Java Runtime Environment sia stato aggiornato, ma Java Compiler e Java plugin per browser no.

Come posso aggiornarli?


ALTRE PARTI AGGIUNTE

sudo update-alternatives --config java tornerà dopo l'uscita

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

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

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

ciò ha senso con il fatto che JRE è stato aggiornato correttamente alla versione 6.31, i problemi sono nel compilatore Java e nel plugin del browser Java.

Qualche idea?


@fossfreedom Non l'ho provato perché pensavo che non fosse una buona idea essendo esplicitamente scritto per il caricamento da Java 5 a 6, dovrei comunque?
Matteo,

1
hmmm - forse stai confondendo che lo script webupd8 è 0,5b? Questa è la versione dello script - non si riferisce alla versione java. Provaci. Vediamo uno screenshot di come appare la finestra quando si esegue lo script.
Fossfreedom

@fossfreedom sì, questo mi ha totalmente confuso; DI ha eseguito la sceneggiatura! controlla le modifiche in questione! Grazie mille per avermi aiutato ..
Matteo

che strano ... non l'ho mai incontrato. Comunque - guarda la risposta qui sotto - dovresti essere in grado di sudo update-alternativescome nell'esempio.
Fossfreedom

@fossfreedom aggiornata di nuovo domanda!
Matteo,

Risposte:


104

Per la tua prima domanda:

forse stai confondendo che lo script webupd8 è 0,5b. Questa è la versione dello script - non si riferisce alla versione java.

Oltre all'impostazione della versione javac.

Ho il sospetto che tu debba dare esplicitamente il percorso del compilatore javac

vale a dire

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

seguito da:

sudo update-alternatives --config javac

Per quanto riguarda la configurazione del plugin java chrome.

La domanda principale:

Come installo Oracle JDK 6?

include queste informazioni - poiché la struttura della cartella è leggermente diversa, il comando di collegamento dovrebbe essere:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

Di per sé questo cambia solo il compilatore - vedi la risposta sotto per update-java-alternatives che gestisce la commutazione di tutte le alternative relative a Java, che è 82 sul mio sistema.
Greg,

55

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 anche 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.


25

Penso che dovresti dare un'occhiata al update-java-alternativescomando dal java-commonpacchetto e ai *.jinfofile utilizzati da esso. Con ciò dovresti essere in grado di passare completamente tra le installazioni java (indipendentemente da JDK, JRE, ...).


2
Ho provato update-java-alternativese poi java -versionera corretto, ma il collegamento $JAVA_HOMEera ancora sbagliato ... Ho cambiato quello manualmente, ma mi chiedo se manchi qualcosa al update-java-alternativesriguardo.
Alexis Wilke,

7

Su ubuntu / linux puoi cambiare la versione di java usando

update-alternatives --config java

Ma prima, è necessario installare la versione.

È possibile utilizzare questo script (./install-java.sh) per installare più JVM

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

Metti questo script nella cartella in cui è stato decompresso il / i JVM ed esegui:

/opt/install-java.sh

Prossimo utilizzo:

update-alternatives --config java

1

Se hai intenzione di impostare manualmente alternative per javac javaws javadoc o qualsiasi altro comando relativo a java, potresti volerli rendere schiavi dell'altenativo java.

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java - la migliore versione del collegamento in modalità automatica è /opt/jdk1.8.0_74/bin/java il collegamento attualmente punta a /opt/jdk1.8.0_74/bin/java link java è / usr / bin / java slave javadoc è / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - priorità 0 slave javadoc: /opt/jdk1.8.0_74/bin/javadoc

Cambia /opt/jdk1.8.0_74/ con la directory in cui è installato il tuo jdk.


0

Apri /etc/environmentin qualsiasi editor di testo e aggiungi la seguente riga:

JAVA_HOME="usr/lib/jvm/open-jdk 

- Il percorso Java potrebbe essere diverso.
Utilizza source per caricare le variabili, eseguendo questo comando:

source /etc/environment

Quindi controlla la variabile, eseguendo questo comando:

echo $JAVA_HOME

Con questo percorso impostato, esegui questo comando:

sudo  update-java-alternatives --list

Scegli la tua versione Java predefinita.

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.