Vários JDK não estão funcionando corretamente no Ubuntu 14.04

5

Versões do JDK (jdk1.7.0_21 e jdk1.7.0_55)

  

Instalado e configurado como abaixo.

jdk1.7.0_21

update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_21/bin/java" 1

update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_21/bin/javac" 1

update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_21/bin/javaws" 1

sudo chmod a+x /usr/bin/java 
sudo chmod a+x /usr/bin/javac 
sudo chmod a+x /usr/bin/javaws
sudo chown -R root:root /usr/lib/jvm/jdk1.7.0_21

jdk1.7.0_55

update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_55/bin/java" 1

update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_55/bin/javac" 1

update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_55/bin/javaws" 1
sudo chmod a+x /usr/bin/java 
sudo chmod a+x /usr/bin/javac 
sudo chmod a+x /usr/bin/javaws
sudo chown -R root:root /usr/lib/jvm/jdk1.7.0_55

e estou escolhendo / alterando o JDK padrão por

update-alternatives --config java
update-alternatives --config javac
update-alternatives --config javaws

Depois disso, se eu executar java -version , enquanto jdk1.7.0_55 é o padrão, a saída é como abaixo.

root@ssa-lpt:/usr/lib/jvm# java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

mas enquanto jdk1.7.0_21 é o padrão, ele envia uma mensagem como

  

java: erro ao carregar bibliotecas compartilhadas: libjli.so : não é possível abrir   arquivo de objeto compartilhado: Nenhum arquivo ou diretório desse tipo

Se eu emitir: localize libjli.so

/usr/lib/jvm/jdk1.7.0_55/jre/lib/amd64/jli/libjli.so
/usr/lib/jvm/jdk1.7.0_55/lib/amd64/jli/libjli.so

Portanto, é claro que, embora eu tenha selecionado jdk1.7.0_21 , mas de alguma forma ele ainda está apontando para jdk1.7.0_55

Tentou renomear o jdk1.7.0_55 , mas sem sorte.

  

Não sabe como consertar isso. Agradecemos antecipadamente por sua ajuda:)

Solução :: Meu jdk1.7.0_21 foi quebrado baixado um novo formulário de cópia oracle untar em /usr/lib/jvm/ foi isso.

    
por Suvasish Sarker 03.05.2014 / 17:41

1 resposta

3

Existem muitas razões pelas quais você pode ver esse erro.

Poderia, por favor, executar todos estes comandos, um por um, e publicar a saída aqui:

  1. file /usr/bin/java
  2. type /usr/bin/java
  3. echo $JAVA_HOME
  4. echo $PATH
  5. ls -ahl /usr/lib/jvm

Então - usando update-alternatives escolha jdk1.7.0_55 e execute isto

$ ldd $(which java)

usando update-alternatives escolha jdk1.7.0_21 e execute este

$ ldd $(which java)

então, novamente para jdk1.7.0_21, execute este

$ sudo java -version

ATUALIZAÇÃO. Resposta

Para todos que têm o mesmo problema:

Primeiro, execute sudo ldconfig . É seguro executar ldconfig a qualquer momento

Após uma longa discussão, concluímos que o jdk1.7.0_21 está corrompido.

Como determinamos isso:

  1. Quando escolher java jdk1.7.0_21 , sudo java -version dará erro, mesmo que seja executado como root .
  2. find /usr/lib/jvm -name "libjli.so" , este comando deve mostrar que libjli está localizado na pasta em que jdk1.7.0_21 está instalado. No nosso caso não foi.

Em outros casos:

Verifique se o jdk pertence a root:root

Verifique se /usr/bin/java é um link simbólico, não executável.

Verifique PATH , java não deve estar no PATH, se você estiver usando update-alternatives .

Também aqui estão links úteis:

link

link

link

    
por c0rp 03.05.2014 / 18:21

Tags