JRE 1. 7-java version-returns: java/lang/NoClassDefFoundError: java/lang/Object

ao executar qualquer aplicação java, ou apenas 'java', o jvm falha:

ocorreu um erro durante a inicialização do VM
java/lang/NoClassDefFoundError: java/lang / Object

Aqui está uma lista de respostas erradas :

  1. a pasta pessoal Java correcta, incluindo a pasta /bin, está na localização global

  2. JAVA_HOME está configurado corretamente

  3. a executar o comando java-fullversion obras

    $ java -fullversion
    
    ./java full version "1.7.0_05-b05"
    
  4. as ligações simbólicas em /usr / java apontam para a instalação correcta de java

  5. não instalei nenhum java 'predefinido' quando criei o sistema

  6. java -version falha...o mesmo erro que o anterior

  7. a emissão dos comandos a partir da estrutura de directórios da instalação java também não funciona

  8. Este é java 64-bit para um 64-bit

Alguma ideia?

 119
Author: Ravi Parekh, 2012-08-04

27 answers

O problema vem de uma instalação Java imprópria (por exemplo, uma instalação feita sem direitos de administração ou simplesmente desapertando ferramentas.postal).

Pode desinstalar, reinstalar o Java com um instalador e / ou mais privilégios ou tentar o seguinte:

Verifique na sua pasta JDK os ficheiros *.pack em jre/lib e jre/lib/ext tal como rt.pack (a localização por omissão é c:\nameof_jdk_folder\jre\lib para o Microsoft Windows e /usr/java/lib para o Unix / GNU Linux)

Esses ficheiros *.pack têm de ser desempacotados para .jar ficheiros que usam este comando:

  • Para Janelas:

    %JAVA_HOME%\bin\unpack200 -r -v -l "" rt.pack rt.jar

  • Para *nix, uma linha de comando semelhante irá desempacotar os ficheiros:

    cd /usr/java/lib

    /usr/bin/unpack200 rt.pack rt.jar

E repete esse passo com todos os *.empacote os arquivos e relance o seu programa.

 171
Author: Rigg802, 2014-01-23 15:25:53

Para java 8 @ * NIX OS:

Do directório "<jdk1.8_root>/jre/lib" (Para mim é: / usr / java / jdk1. 8. 0_05/jre/lib)

Corra:

 ../../bin/unpack200 rt.pack rt.jar
 ../../bin/unpack200 jsse.pack jsse.rar
 ../../bin/unpack200 charsets.pack charsets.jar

(Você não pode usar o unpack200 do sistema causa problemas de versão.) Este unpack200 está na pasta java 8 (para mim: / usr / java/jdk1. 8. 0_05 / bin)

Benedek

 20
Author: betontalpfa, 2014-06-16 11:18:37

Parece que para uma arquitectura de 64 bits é necessário instalar tanto a versão de 32 bits como a versão de 64 bits do jre (architecture independent files as rt.jar são distribuídos apenas na versão de 32 bits).

Lembre - se então de prestar atenção para incluir o executável java correcto na variável global PATH environment.

 12
Author: Tommaso, 2012-10-10 09:40:28

Solução rápida para pessoas impacientes ;) em máquinas janelas, tente isto: Vá para a pasta C:\Windows\System32 e remova java.exe (ou mude o nome para algo como java.exe.old).

Uma vez que pelo menos 1,6, não deve haver um java.exe no directório do Windows. Se há, é um resto de alguma coisa.

Um pouco mais de leitura:

Estou realmente surpreendido que uma pergunta de 2012 ainda não tenha uma resposta aprovada e encontrei o mesmo. edição em 2015 no meu Win 7 32-Bit OS! Então, o que aconteceu? Basicamente, estava tudo a funcionar bem, descarreguei a base de dados H2 e quando tentei começar ...
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Encontrei esta pergunta e pude confirmar os mesmos sintomas:

O JAVA_HOME está configurado correctamente:

echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26

java -version falha, enquanto java --fullversion funciona bem:

java -fullversion
java full version "1.6.0_45-b06"

Solução: Ir para a pasta C:\Windows\System32 e apagar (de facto, mudei de nome) java.exe file!!!!

Agora, eu tenho:

java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)

E H2 Console (Command Line) também funciona bem!

Os créditos vão para o último post neste fórum: https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/

 11
Author: iaforek, 2017-03-15 22:18:12

Provavelmente falta-lhe um ficheiro chamado rt.jar em sua instalação que tem o arquivo de classe para java.idioma.Objecto. Verifique os seus ficheiros de instalação, etc.

Em particular, note que uma sobreposição intsaller de 64 bits (ou instala "next to") uma instalação existente de 32 bits. Em outras palavras, para obter uma instalação de 64 bits totalmente operacional, você deve primeiro executar a instalação de 32 bits, e seguir isso com uma instalação de 64 bits se você tiver uma máquina capaz de 64 bits...

Se em vez disso faça apenas uma instalação de 64 bits que você estará faltando certos arquivos na instalação e vai obter erros como o acima.

 8
Author: user3213415, 2014-01-20 00:44:54
Eu baixei o novo JDK hoje (1.8.0.73) comecei c:> java.exe e fiquei com o infame:
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Só queria partilhar a minha solução de trabalho aqui.

Quando eu cd'Ried na pasta jdk\bin, Java iria correr bem, então eu sabia que era a PATH. Marquei para a CMD para o provar e funcionou.

Então, uma das pastas do arquivo deve ter tido o que estava causando o conflito, eu pensei. Ao que parece, foi a [[8]] que detém ligações simbólicas para os executáveis.

java.exe estava a apontar para jre\bin. O arquivo estava corrompido, quando eu comecei \jre\bin\java.exe -- o mesmo erro exato. Bingo. Reinstalei o JRE e o problema desapareceu. Feliz código...

 8
Author: Striker, 2016-03-04 01:58:22

Este problema acontece quando se instala o JDK por _uncompressing_ em vez de _executing_ ele.

Por exemplo:

unzip jdk-6u45-linux-x64.bin  (wrong)

sh ./jdk-6u45-linux-x64.bin   (right)
No primeiro cenário, as bibliotecas em tempo de execução, como rt.jar, não fique automaticamente descompensado (assim, você pode encontrar os arquivos rt.pack, etc. em vez de ... jar ones).
 5
Author: kdn, 2015-10-06 11:33:08

No Windows 10, eu estava enfrentando o mesmo problema com JRE 1.8 (8u121).
Tipagem

java -version

O CMD prompt devolve

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

Todos os outros comandos, echo %JAVA_HOME%, echo %JRE_HOME%, echo %PATH%, java -fullversion funcionou bem.

Indo para as variáveis de ambiente no painel de administração do sistema, remova do caminho a ligação C:\ProgramData\Oracle\Java\javapath, e certifique-se de ter definido no caminho a ligação para C:\Program Files\Java Folder\bin.

Depois disso, verifique se em C:\Windows\System32 existe um ficheiro java.exe; Se for verdadeiro, remova esse ficheiro.

A escrever agora java -version funciona bem.

 5
Author: Francesco Marchitelli, 2018-03-09 19:54:25
Tive o mesmo problema recentemente. No meu caso, a minha máquina windows 7 descarregou automaticamente o java e adicionou C:\ProgramData\Oracle\Java\javapath ao início da minha variável de ambiente path, que estragou o meu java. Assim que me livrei disso do caminho, funcionou.
 4
Author: developer747, 2016-01-25 22:03:43

Se você fizer "chmod u+rx" no binário java e executá-lo, ele irá desempacotar os ficheiros jar e você poderá fazer uma versão java sem erros de execução

 3
Author: Peter Nielsen, 2014-08-20 14:19:05

Você não pode instalar apenas o 64bit, você deve primeiro instalar o 32bit e, em seguida, adicionar os componentes 64bit.

De java.com:

Instalar o JRE num sistema de 64 bits que permite um JVM de 32 bits é um processo em duas etapas: primeiro instalar o JRE de 32 bits e depois instalar o suporte adicional para operações de 64 bits. Os nomes dos ficheiros são os seguintes:

 3
Author: Andrew Speer, 2014-08-21 21:06:49

Se instalar uma versão de 64 bits sem primeiro instalar 32 bits, este erro irá ocorrer apesar de corrigir todos os outros problemas. Eu tenho uma nova máquina Dell i7 64-bit Windows 10 Pro executando Java 8u71. Depois de ter adicionado o meu %path% e %classpath% às variáveis de ambiente e de tentar várias outras correcções, desinstalar 64-bit, instalar 32-bit e reinstalar 64-bit corrigiu-o.

Alguns dos problemas, como não ter seus arquivos desempacotados, etc. que foram mencionados como possíveis causas ainda podem estar causando problemas, mas se você não fizer isso, também, as outras correções não funcionarão.

 1
Author: Bryan Robinson, 2016-01-27 05:33:16

No meu caso, uso um windows 8.1 (instalado jdk1. 8. 0_77), fiz três coisas:

  1. apaguei os jdks anteriores
  2. Mudei o nome para java.ficheiro exe No Interior C:\Windows\System32
  3. eu também removi C:\ProgramData\Oracle\Java\javapath na minha localização (echo %PATH%)
E voilà arranjou-o!
 1
Author: kashogi, 2016-04-04 11:07:07
Enfrentei um problema semelhante e descobri que a ligação simbólica nos dados do programa(C:\ProgramData\Oracle\Java\javapath) estava errado. Dei o caminho certo e funcionou.

Detalhes sobre como corrigir os dados do programa estão disponíveis aqui

 1
Author: Siva Kameswara Rao Munipalle, 2017-05-23 10:31:39
Outra resposta pode ser usar o alcatrão.GZ file instead in the Linux case. Parece haver algo assim também para a plataforma solaris. Desta forma, todos os arquivos já estarão no formato esperado e não haverá problemas de desempacotamento.
 0
Author: Rythmic, 2013-09-23 15:45:36

Tenho um problema em instalações Linux x86_64 com JDK 1.7.0_40 i586. Eu descobri que o problema é que rpm não pode desempacotar arquivos jar, como mencionado por Rigg802 (embora rpm completa marcando sucesso):

Unpacking JAR files...
        rt.jar...
/var/tmp/rpm-tmp.zLzkkb: /usr/java/jdk1.7.0_40/bin/unpack200: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_40/jre/lib/rt.jar

File /lib/ld-linux.so. 2 é fornecido pela glibc-2, 12-1.107.el6_4. 4. i686 que não está entre rpm deps do jdk rpm.

O Oracle JDK rpm também requer 32 versões bit da libgcc-4.4.7-3.el6. i686 a instalar

Então, a solução é: instalar a glibc-2.12-1.107.el6_4. 4.i686 e libgcc-4.4.7-3.el6.1686 primeiro.
 0
Author: scrutari, 2013-10-15 08:17:42

Uma solução rápida que funcionou para mim:

for file in $(find "$JAVA_HOME" -name "*pack")
do 
    unpack200 "${file}" "${test_file/%pack/jar}";
done
 0
Author: Liudvikas, 2016-01-27 14:34:54
Descobri que este erro ocorreu quando extraí o .ficheiro rpm.

Depois removi essa pasta e transferi o jdk-7u79-linux-x64.alcatrao.gz Para Linux 64 e extraiu o conteúdo deste arquivo em vez disso. Tambem: exportar JAVA_HOME= / opt / java / jdk1.7. 0_79 exportar o JDK_ Home= / opt / java/jdk1. 7. 0_79 exportar caminho=${JAVA_HOME} / bin

 0
Author: user5974531, 2016-02-24 12:38:12

Instale o jre de novo . Simplesmente resolveu o meu problema. (O lote de arranque do SonarQube começou a dar este erro após ter instalado o jdk)

 0
Author: stratovarius, 2016-08-24 22:43:49

Vá ao painel de controlo, desinstale a coisa relacionada com o java (fechar o eclipse se for aberto), depois reinstale o java e o open eclipse, projectos limpos.

 0
Author: Ateeque Shaikh, 2016-09-30 08:11:56

Acabei de fazer isto no Solaris e encontrei este problema idêntico onde mesmo "java-version" não funciona. Há uma razão para que as versões de 64 bits da distribuição são muito menores que o 32-bit. É de facto como acima referido:

Em outras palavras, para obter uma instalação de 64 bits totalmente operacional, você deve primeiro executar a instalação de 32 bits, e seguir isso com uma instalação de 64 bits se você tiver uma máquina capaz de 64 bits...

Então eu corri o instalador para o ... 32 bits:

Sh jdk-6u131-solaris-sparc.sh

Depois corri o instalador para o 64-bit:

Sh jdk-6u131-solaris-sparcv9.sh

Isto dá - me vários executáveis java para escolher:

    $ Find . -nome java
  • ./jdk1. 6. 0_131 / db / demo / programs/scores / java
  • ./jdk1. 6. 0_131 / db / demo / programs/vtis / java
  • ./jdk1. 6. 0_131/bin / java
  • ./jdk1. 6. 0_131/bin/sparcv9 / java
  • ./jdk1. 6. 0_131/jre/bin / java
  • ./jdk1. 6. 0_131/jre / bin/sparcv9 / java

Os sparcv9 java são as versões 64bits e eles trabalham com"- version " quando instalados ao lado do 32bit JDK.

  • ./jdk1. 6. 0_131/bin/sparcv9 / java-version
  • versão java "1.6.0_131"
  • Java (TM) SE Runtime Environment (build 1.6.0_131-b32)
  • Java HotSpot (TM) 64-Bit Server VM (build 20. 131-b32, modo misto)

-Dan

 0
Author: user7323228, 2016-12-20 23:09:32

Na janela 10 já existe um caminho presente na env como C:\>ProgramData\Oracle\Java\javapath que contém ligações simbólicas para os executáveis.

Quando instalo uma nova versão e removo essa da minha variável de ambiente, o meu projecto começa a mostrá-la.

Estou a usar o oxigénio do eclipse na janela 10.

Para resolver isto: -

  1. Apenas removo o path C:\>ProgramData\Oracle\Java\javapath da variável de ambiente e adiciono Nova env como JAVA_HOME e %JAVA_HOME% / bin na path

  2. Reinstalo o jdk com o administrador. privilégios (apagar a pasta JRE anterior)

  3. abra o seu projecto eclipse > carregue com o botão direito > Goto Proprieties> nas bibliotecas > agora remova a biblioteca do sistema JRE > Carregue em Adicionar Biblioteca > seleccione "biblioteca do sistema JRE" > Carregue em Seguinte > Seleccione " JRE padrão do espaço de trabalho JRE(jre1.8.x_xxx) " > terminar
O meu problema está resolvido. Espero que te ajude.
 0
Author: Shubham Jain, 2017-07-01 08:35:45
Isto resolveu o problema que eu tinha com os CentOS.
sudo yum install java-1.8.0-openjdk-devel

Ver também Definir JAVA_HOME & CLASSPATH em CentOS 6

 0
Author: Joe Jadamec, 2018-01-26 18:19:57
Então, eu continuei tentando tudo e, finalmente, parece que reinstalar java depois de desinstalar isso resolveu o meu problema.
 0
Author: Plabon Dutta, 2018-01-28 23:05:56

Eu estava a enfrentar o mesmo problema: ocorreu um erro durante a inicialização da VM java/lang/NoClassDefFoundError: java/lang / Object

Siga as seguintes etapas para resolver o problema:

Passo 1. Ir C:\Program ficheiros\ e procurar pela pasta Java.

Passo 2. Apagar C:\Program ficheiros\pasta Java.

Passo 3. Obter o novo Jdk para a sua versão 32 bit / 64 bit de http://www.oracle.com/technetwork/java/javase/downloads/index.html

Passo 4. Instalar JDK

Passo 5: agora defina JAVA_HOME para "C:\Program ficheiros\Java\jdk1.8.0_91"

Passo 6: linha de comandos aberta e introduza a versão java.

Funciona.
 -1
Author: Mahesh Sutar, 2016-06-28 08:41:37

Eu enfrentei o mesmo problema, eu instalei duas versões java por isso causou este problema. para confirmar isto vá e clique em ícone java no painel de controle se não abrir, então o problema é o mesmo, basta ir e desinstalar uma versão. é canja. Obrigado.

 -1
Author: srinivasan Elangovan, 2016-08-09 12:36:54

Nas janelas isto funciona para mim

C:\jdk-8u162-windows-x64\jre\lib>..\..\bin\unpack200 -r -v rt.pack rt.jar
 -1
Author: V. Kalyuzhnyu, 2018-03-10 14:41:50