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 :
a pasta pessoal Java correcta, incluindo a pasta /bin, está na localização global
JAVA_HOME está configurado corretamente
-
a executar o comando java-fullversion obras
$ java -fullversion ./java full version "1.7.0_05-b05"
as ligações simbólicas em /usr / java apontam para a instalação correcta de java
não instalei nenhum java 'predefinido' quando criei o sistema
java -version
falha...o mesmo erro que o anteriora emissão dos comandos a partir da estrutura de directórios da instalação java também não funciona
Este é java 64-bit para um 64-bit
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.
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
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.
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/
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.
c:> java.exe
e fiquei com o infame:
Só queria partilhar a minha solução de trabalho aqui.Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
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.
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...
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).
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.
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.
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
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:
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.
No meu caso, uso um windows 8.1 (instalado jdk1. 8. 0_77), fiz três coisas:
- apaguei os jdks anteriores Mudei o nome para java.ficheiro exe No Interior C:\Windows\System32
- eu também removi C:\ProgramData\Oracle\Java\javapath na minha localização (echo %PATH%)
Detalhes sobre como corrigir os dados do programa estão disponíveis aqui
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.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
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
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)
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.
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
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: -
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 pathReinstalo o jdk com o administrador. privilégios (apagar a pasta JRE anterior)
- 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
sudo yum install java-1.8.0-openjdk-devel
Ver também Definir JAVA_HOME & CLASSPATH em CentOS 6
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.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.
Nas janelas isto funciona para mim
C:\jdk-8u162-windows-x64\jre\lib>..\..\bin\unpack200 -r -v rt.pack rt.jar