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:
-
file /usr/bin/java
-
type /usr/bin/java
-
echo $JAVA_HOME
-
echo $PATH
-
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:
- Quando escolher java
jdk1.7.0_21
,sudo java -version
dará erro, mesmo que seja executado como root . -
find /usr/lib/jvm -name "libjli.so"
, este comando deve mostrar quelibjli
está localizado na pasta em quejdk1.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: