Como definir a versão Java padrão?

125

Eu segui todas as instruções indicadas nesta pergunta , mas estou encontrando alguns problemas com a última parte.

Na verdade, tenho a versão 6.22 do java e gostaria de atualizar para a versão 6.30.

Então, depois de mover o diretório extraído java-6-oraclepara dentro /usr/lib/jvm, não sei o que fazer, pois o script indicado na resposta acima atualiza do java 5 para o java 6.

Por uma questão de clareza, aqui está a saída se eu fizer um 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

O que eu deveria fazer agora?


PARTE ADICIONADA

Sob a sugestão de @fossfreedom, executei o script de qualquer maneira e, na verdade, ele atualizou a versão java.

De fato, se eu executar a java -versionsaída do comando , será o seguinte:

$ 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)

Ainda existe um problema , se o Irun javac -versionme fornecer a versão antiga instalada:

$ javac -version
javac 1.6.0_22

E se eu usar o testador neste link, ele me dirá que a versão é

Java Version 1.6.0_22 from Sun Microsystems Inc.

O que está acontecendo de errado?

Parece que o Java Runtime Environment foi atualizado, mas o Java Compiler e o plugin do Java para o navegador não.

Como posso atualizá-los?


OUTRAS PARTES ADICIONADAS

sudo update-alternatives --config java retornará após a saída

$ 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:

isso faz sentido com o fato de o JRE ser atualizado corretamente para a versão 6.31, mas existem problemas no Java Compiler e no plug-in do navegador Java.

Alguma ideia?

Matteo
fonte
@fossfreedom Eu não tentei porque achei que não era uma boa ideia, pois foi explicitamente escrito para o upload do Java 5 para o 6, devo?
Matteo
1
hmmm - possivelmente você pode estar confuso que o script webupd8 seja 0.5b? Essa é a versão do script - não se refere à versão java. De uma chance. Vamos ver uma captura de tela da aparência da janela quando você executa o script.
fossfreedom
@fossfreedom sim, isso me confundiu totalmente; DI executou o script! ! verificar as edições em questão thks muito por me ajudar ..
Matteo
que estranho ... nunca encontrei isso. De qualquer forma - veja a resposta logo abaixo -, você deve conseguir sudo update-alternativesconforme o exemplo.
fossfreedom
@fossfreedom atualizado novamente pergunta!
Matteo

Respostas:

104

Re sua primeira pergunta:

possivelmente você pode estar confuso que o script webupd8 seja 0.5b. Essa é a versão do script - não se refere à versão java.

Após a configuração da versão javac.

Eu suspeito que você precisa dar explicitamente o caminho do compilador javac

ie

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

Seguido por:

sudo update-alternatives --config javac

Com relação à configuração do plugin java chrome.

A questão principal:

Como instalo o Oracle JDK 6?

inclui essas informações - como sua estrutura de pastas é um pouco diferente, seu comando de link deve ser:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/
liberdade de expressão
fonte
Por si só, isso apenas altera o compilador - veja a resposta abaixo para update-java-alternative, que lida com a alternância de todas as alternativas relacionadas ao java, que são 82 no meu sistema.
Greg
55

Veja isto ; corre

sudo  update-java-alternatives --list

para listar todas as instalações Java em uma máquina por nome e diretório e, em seguida, execute

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

para escolher qual JRE / JDK usar.

Se você deseja usar JDKs / JREs diferentes para cada tarefa Java, é possível executar alternativas de atualização para configurar um executável java por vez; você pode correr

sudo  update-alternatives --config java[Tab]

para ver os comandos Java que podem ser configurados (java, javac, javah, javaws, etc). E depois

sudo  update-alternatives --config [javac|java|javadoc|etc.]

associará essa tarefa / comando Java a um JDK / JRE específico.

Você também pode precisar definir JAVA_HOME para alguns aplicativos: a partir desta resposta, você pode usar

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

para JREs ou

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

para JDKs.

WillC
fonte
25

Eu acho que você deve dar uma olhada no update-java-alternativescomando do java-commonpacote e nos *.jinfoarquivos usados ​​por ele. Com isso, você poderá alternar completamente entre instalações java (independentemente do JDK, JRE, ...).

Johannes Wachter
fonte
2
Eu tentei o update-java-alternativese então java -versionestava correto, mas o link $JAVA_HOMEainda estava errado ... Eu mudei esse manualmente, mas me pergunto se há algo faltando update-java-alternativesnesse sentido.
Alexis Wilke
7

No ubuntu / linux, você pode alternar a versão java usando

update-alternatives --config java

Mas antes, você precisa instalar a versão.

Você pode usar este script (./install-java.sh) para instalar várias JVMs

#!/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"

Coloque este script na pasta onde descompactou a (s) JVM (s) e execute:

/opt/install-java.sh

Próximo uso:

update-alternatives --config java
Ricardo Jl Rufino
fonte
1

Se você definir manualmente alternativas para javac javaws javadoc ou qualquer outro comando relacionado a java, convém torná-los escravos da alternativa 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 - a melhor versão do link de modo automático é /opt/jdk1.8.0_74/bin/java link atualmente aponta para /opt/jdk1.8.0_74/bin/java link java java é / usr / bin / java slave javadoc é / usr / bin / javadoc /opt/jdk1.8.0_74/bin/java - escravo de prioridade 0 javadoc: /opt/jdk1.8.0_74/bin/javadoc

Altere /opt/jdk1.8.0_74/ com o diretório em que o seu jdk está instalado.

Thiago
fonte
0

Abra /etc/environmentem qualquer editor de texto e adicione a seguinte linha:

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

- O caminho Java pode ser diferente.
Use source para carregar as variáveis, executando este comando:

source /etc/environment

Em seguida, verifique a variável, executando este comando:

echo $JAVA_HOME

Com este caminho definido, execute este comando:

sudo  update-java-alternatives --list

Escolha sua versão Java padrão.

Mwongera808
fonte