A instalação do openjdk-7-jdk não atualiza o java (que ainda é a versão 1.6)

6

Estou com problemas para atualizar o Java. Estou executando o Ubuntu 11.10.

Eu posso executar sudo apt-get install openjdk-7-jdk e concluir com sucesso. javac -version é 1.7, mas java -version é 1.6. Isso é semelhante a esse problema , mas meu problema não é, até onde eu sei, o caminho.

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Obrigado.

    
por TravisThomas 28.03.2012 / 02:14

1 resposta

8

Atualização:

Encontrou um site com uma boa explicação: LINK

No link:

Depois temos que fazer alguma configuração.
O Debian tem um script para manter diferentes versões de programas como java chamado update-alternatives .

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/bin/java 1065
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0/bin/javac 1065

Onde 1065 é uma prioridade dada.

Para verificar minha instalação, eu uso o parâmetro –config
update-alternatives --config java
isto imprime:
There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/jdk1.7.0/bin/java             1065      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/jdk1.7.0/bin/java             1065      manual mode

E como 1065 é maior que 1061, o novo java 7 instalado será usado por padrão na minha máquina java -version
impressões:

java version "1.7.0"
 Java(TM) SE Runtime Environment (build 1.7.0-b147)
 Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

Notas: Isso pode torná-lo mais compreensível.

SLES11 # which java
/usr/bin/java

SLES11 # update-alternatives --list java
/usr/lib64/jvm/jre-1.6.0-ibm/bin/java

SLES11 # update-alternatives --display java
java - status is auto.
 link currently points to /usr/lib64/jvm/jre-1.6.0-ibm/bin/java
/usr/lib64/jvm/jre-1.6.0-ibm/bin/java - priority 1608
 slave rmiregistry: /usr/lib64/jvm/jre-1.6.0-ibm/bin/rmiregistry
 slave tnameserv: /usr/lib64/jvm/jre-1.6.0-ibm/bin/tnameserv
 slave rmid: /usr/lib64/jvm/jre-1.6.0-ibm/bin/rmid
 slave jre_exports: /usr/lib64/jvm-exports/jre-1.6.0-ibm
 slave policytool: /usr/lib64/jvm/jre-1.6.0-ibm/bin/policytool
 slave keytool: /usr/lib64/jvm/jre-1.6.0-ibm/bin/keytool
 slave jre: /usr/lib64/jvm/jre-1.6.0-ibm
Current 'best' version is /usr/lib64/jvm/jre-1.6.0-ibm/bin/java.

A página man fornece o caminho que as update-alternatives usam para seu diretório.

SLES11 # pwd
/etc/alternatives

SLES11 # ll
lrwxrwxrwx 1 root root 37 Mar 19 06:03 java -> /usr/lib64/jvm/jre-1.6.0-ibm/bin/java
lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre -> /usr/lib64/jvm/jre-1.6.0-ibm
lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre_1.6.0 -> /usr/lib64/jvm/jre-1.6.0-ibm
lrwxrwxrwx 1 root root 36 Mar 19 06:03 jre_1.6.0_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm
lrwxrwxrwx 1 root root 36 Mar 19 06:03 jre_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm
lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre_ibm -> /usr/lib64/jvm/jre-1.6.0-ibm
lrwxrwxrwx 1 root root 36 Mar 19 06:03 jre_ibm_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm

Fazendo a mudança se você já os instalou e só precisa alterar o padrão.

SLES11 # update-alternatives --config java

There is only 1 program which provides java
(/usr/lib64/jvm/jre-1.6.0-ibm/bin/java). Nothing to configure.

Resposta original:

Se você olhar em /etc/java ou algo parecido com /etc/java-7-openjdk , deverá ver os arquivos de configuração.
java.conf ou jvm.cfg

Isso geralmente (dependendo) do arquivo de configuração define suas opções. Você pode ter várias versões do java instaladas ao mesmo tempo e alterar as variáveis de inicialização para determinar qual delas é sua JVM padrão.

do CentOS java.conf

# If you have the a base JRE package installed
# (e.g. java-1.6.0-openjdk):
#JAVA_HOME=$JVM_ROOT/jre

# If you have the a devel JDK package installed
# (e.g. java-1.6.0-openjdk-devel):
#JAVA_HOME=$JVM_ROOT/java 

do Ubuntu jvm.cfg

# List of JVMs that can be used as an option to java, javac, etc.
# Order is important -- first in this list is the default JVM.
# NOTE that this both this file and its format are UNSUPPORTED and
# WILL GO AWAY in a future release.
#
# You may also select a JVM in an arbitrary location with the
# "-XXaltjvm=" option, but that too is unsupported
# and may not be available in a future release.
#
-server KNOWN
-client IGNORE
-hotspot ERROR
-classic WARN
-native ERROR
-green ERROR
-jamvm KNOWN
-cacao KNOWN
-zero KNOWN
-shark ALIASED_TO -zero
 

No Ubuntu há um programa chamado update-java-alternatives
Estas são as poucas linhas superiores da página man

NAME
       update-java-alternatives - update alternatives for jre/sdk installations

SYNOPSIS
       update-java-alternatives [--jre] [--plugin] [-t|--test|-v|--verbose]
             -l|--list []
             -s|--set 
             -a|--auto
             -h|-?|--help

DESCRIPTION
       update-java-alternatives  updates  all  alternatives belonging to one runtime or development kit for the Java language.  A package does provide these
       information of it's alternatives in /usr/lib/jvm/..jinfo.
root@ubuntul:/# update-java-alternatives -l  
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
 -s|--set 
              Set all alternatives of the registered jre/sdk installation to the program path provided by the  installation.

O que normalmente também vejo são links em /etc/profile.d para ambientes de inicialização do Java.

Meu palpite é que suas bibliotecas java foram instaladas no mesmo local e os arquivos de configuração ainda estão com a versão original. Você só precisa fornecer o novo caminho da JVM.

    
por 28.03.2012 / 12:29