Ao executar qualquer aplicativo java, ou apenas 'java', a jvm falha:
Ocorreu um erro durante a inicialização da VM
java / lang / NoClassDefFoundError: java / lang / Object
Aqui está uma lista de respostas erradas :
O diretório inicial Java correto, incluindo o diretório / bin, está no PATH global
JAVA_HOME está definido corretamente
Executar o comando java -fullversion works
$ java -fullversion ./java full version "1.7.0_05-b05"
Os links simbólicos em / usr / java apontam para a instalação correta do java
Não instalei nenhum java 'padrão' quando criei o sistema
java -version
falha ... o mesmo erro acimaA emissão dos comandos sob a estrutura de diretórios da instalação java também não funciona
Este é um java de 64 bits para um de 64 bits.
Alguma ideia?
rt.jar
arquivo, o que é exigidoJVM
no momento do carregamentoJRE
Respostas:
Esse problema decorre de uma instalação incorreta do Java.
Possibilidade 1
A biblioteca padrão Java está contido em vários JARs, como
rt.jar
,deploy.jar
,jsse.jar
, etc. Quando o JRE é embalado, esses arquivos JAR críticos são compactados com Pack200 e armazenados comort.pack
,deploy.pack
,jsse.pack
, etc. instalador do Java é suposto eles descomprimir. Se você está tendo esse erro, aparentemente isso não aconteceu.Você precisa executar manualmente
unpack200
todos os.pack
arquivos nos JREslib/
elib/ext/
pastas.janelas
Para descompactar um
.pack
arquivo (por exemplort.pack
), execute:Para descompactar todos os
.pack
arquivos recursivamente , na execução raiz do JRE:* nix
Para descompactar um
.pack
arquivo (por exemplort.pack
), execute:Para descompactar todos os
.pack
arquivos recursivamente , na execução raiz do JRE:Possibilidade 2
Você desinstalou o Java de alguma outra maneira. Talvez você tenha instalado sem direitos de administrador ou tenha tentado simplesmente extrair arquivos do instalador. Tente novamente com o instalador e / ou mais privilégios. Ou, se você não quiser usar o instalador, use o
.tar.gz
pacote Java.fonte
for %i in (*.pack) do (..\bin\unpack200 "%i" "%~ni.jar" & del "%i")
(talvez um dia eu o torne um pouco mais robusto para não precisar alterar manualmente o caminho, mas, novamente, eu normalmente apenas uso a.gz
liberação do JRE que não os compacta. )Para Java 8 em um sistema operacional * nix, vá para
<jdk root>/jre/lib
(para mim/usr/java/jdk1.8.0_05/jre/lib
). Nesse diretório, execute:Para evitar problemas de versão, caso você tenha outro JRE instalado, use o mesmo
unpack200
que acompanha o JRE que você está corrigindo - ou seja, na linha de comando, use../../bin/unpack200
(para mim, isso se expande para/usr/java/jdk1.8.0_05/bin/unpack200
), não apenasunpack200
.fonte
"<jdk1.8_root>/lib"
../bin/unpack200 tools.pack tools.jar
na"<jdk1.8_root>/jre/lib/ext"
../../bin/unpack200 jfxrt.pack jfxrt.jar
../../bin/unpack200 localedata.pack localedata.jar
Parece que, para uma arquitetura de 64 bits, é necessário instalar a versão de 32 bits e a versão de 64 bits do jre (arquivos independentes de arquitetura como rt.jar são distribuídos apenas na versão de 32 bits).
Lembre-se de prestar atenção para incluir o executável java correto na variável de ambiente global PATH.
fonte
architecture independent files as rt.jar are distributed only in the 32-bin version
?Solução rápida para pessoas impacientes;) Nas máquinas Windows , tente o seguinte: Vá para o
C:\Windows\System32
diretório e excluajava.exe
(ou renomeie para algo comojava.exe.old
).Desde pelo menos 1.6, não deve haver um
java.exe
no diretório do Windows. Se houver, é uma sobra de alguma coisa.Um pouco mais de leitura:
Estou realmente surpreso que uma pergunta de 2012 ainda não tenha uma resposta aprovada e, na verdade, encontrei o mesmo problema em 2015 no meu sistema operacional Win 7 de 32 bits!
Então o que aconteceu?
Basicamente, tudo estava funcionando bem, baixei o banco de dados H2 e, quando tentei iniciar
H2 Console (Command Line)
, obtive:Encontrei esta pergunta e consegui confirmar os mesmos sintomas:
JAVA_HOME está definido corretamente:
java -version
falha, enquantojava --fullversion
funciona bem:SOLUÇÃO: Vá para o
C:\Windows\System32
diretório e exclua (na verdade, renomei) ojava.exe
arquivo !!!!Agora eu recebo:
e
H2 Console (Command Line)
funciona bem também!Os créditos vão para a última postagem neste fórum: https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/
fonte
C:\ProgramData\Oracle\Java\javapath
estavam causando o problema. Eu mudo a variável de ambiente PATH e agora funciona.Eu baixei o novo JDK hoje (1.8.0.73)
c:> java.exe
e comecei o infame:Eu só queria compartilhar minha solução de trabalho aqui.
Quando entrei na
jdk\bin
pasta, o Java funcionava bem, então eu sabia que era oPATH
. ComeceiPATH
a apenas\jdk\bin
no CMD para provar isso e funcionou.Então, uma das pastas no
PATH
deve ter tidojava.exe
que estava causando o conflito, pensei. Como se viu, foi oC:\>ProgramData\Oracle\Java\javapath
que mantém links simbólicos para os executáveis.java.exe
estava apontando parajre\bin
. O arquivo estava corrompido quando eu comecei\jre\bin\java.exe
- exatamente o mesmo erro. Bingo. Reinstalei o JRE e o problema foi resolvido. Feliz codificação ...fonte
Você provavelmente está perdendo um arquivo chamado rt.jar em sua instalação, que possui o arquivo de classe para java.lang.Object. Verifique seus arquivos de instalação, etc.
Em particular, observe que um instalador de 64 bits se sobrepõe (ou instala "próximo a") uma instalação de 32 bits existente. Em outras palavras, para obter uma instalação de 64 bits totalmente funcional, você deve primeiro executar a instalação de 32 bits e seguir com uma instalação de 64 bits se tiver uma máquina com capacidade de 64 bits ...
Se, em vez disso, você fizer apenas uma instalação de 64 bits, alguns arquivos estarão faltando na instalação e ocorrerão erros como o descrito acima.
fonte
No Windows 10, eu estava enfrentando o mesmo problema com o JRE 1.8 (8u121).
Digitando
o prompt do cmd retorna
Todos os outros comandos,
echo %JAVA_HOME%
,echo %JRE_HOME%
,echo %PATH%
,java -fullversion
funcionou bem.Indo para variáveis de ambiente no painel de administração do sistema, remova do PATH o link
C:\ProgramData\Oracle\Java\javapath
e certifique-se de ter configurado no PATH o linkC:\Program Files\Java Folder\bin
.Depois disso, verifique se
C:\Windows\System32
existe umjava.exe
arquivo; se verdadeiro, exclua esse arquivo.Digitar agora
java -version
funciona bem.fonte
C:\Program Files\Java Folder\bin
. Em vez disso, eu uso,C:\Program Files\Java\jdk1.8.0_161\bin
mas não me ajuda de qualquer maneira. Não há arquivo java.exe na pasta System32Esse problema ocorre quando você instala o JDK por
_uncompressing_
ele, em vez_executing_
dele.Por exemplo:
No primeiro cenário, as bibliotecas de tempo de execução, como rt.jar, não ficam automaticamente descomprimidas (portanto, você pode encontrar os arquivos rt.pack, etc., em vez dos arquivos .jar).
fonte
Eu tive o mesmo problema recentemente. No meu caso, minha máquina com Windows 7 baixou automaticamente o java e adicionou
C:\ProgramData\Oracle\Java\javapath
ao início da variável de ambiente do meu caminho, o que atrapalhou meu java. Depois de me livrar disso do caminho, funcionou.fonte
se você executar "chmod u + rx" no binário java e executá-lo, ele descompactará os arquivos jar e você poderá executar uma versão java sem erros de tempo de execução
fonte
Você não pode instalar apenas os 64 bits, primeiro instale os 32 bits e adicione os componentes de 64 bits.
Em java.com:
fonte
Se você instalar uma versão de 64 bits sem instalar primeiro 32 bits, esse erro ocorrerá apesar de corrigir todos os outros problemas. Eu tenho uma nova máquina Windows 10 Pro de 64 bits Dell i7 executando o Java 8u71. Depois de adicionar meu% path% e% classpath% às variáveis de ambiente e tentar várias outras correções, desinstalando 64 bits, instalando 32 bits e reinstalando 64 bits, corrigi-lo.
Alguns dos problemas, como não ter seus arquivos descompactados 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.
fonte
No meu caso, eu uso o Windows 8.1 (jdk1.8.0_77 instalado), fiz três coisas:
e voila consertou!
fonte
Eu enfrentei o problema semelhante e descobri que o link simbólico nos dados do programa (C: \ ProgramData \ Oracle \ Java \ javapath) estava errado. Eu dei o caminho correto e funcionou.
Detalhes sobre como corrigir os dados do programa estão disponíveis aqui
fonte
Outra resposta poderia ser usar o arquivo tar.gz no caso do Linux. Parece haver algo assim também para a plataforma solaris. Dessa forma, todos os arquivos já estarão no formato esperado e não haverá problemas de descompactação.
fonte
Eu tenho alguns problemas nas instalações do Linux x86_64 com o JDK 1.7.0_40 i586. Eu descobri que o problema é que o rpm não pode descompactar arquivos jar, conforme mencionado pelo Rigg802 (embora o rpm conclua a marcação de sucesso):
O arquivo /lib/ld-linux.so.2 é fornecido pelo glibc-2.12-1.107.el6_4.4. i686 que não está entre os deps rpm do jdk rpm.
O Oracle JDK rpm também requer versões de 32 bits do libgcc-4.4.7-3.el6. i686 a ser instalado
Portanto, a solução alternativa é instalar primeiro o glibc-2.12-1.107.el6_4.4.i686 e libgcc-4.4.7-3.el6.i686.
fonte
Solução rápida que funcionou para mim:
fonte
Eu descobri que esse erro ocorreu quando extraí o arquivo .rpm.
Em seguida, removi a pasta e baixei o jdk-7u79-linux-x64.tar.gz para o Linux 64 e extraí o conteúdo desse arquivo. Também: exportar JAVA_HOME = / opt / java / jdk1.7.0_79 exportar JDK_HOME = / opt / java / jdk1.7.0_79 exportar PATH = $ {JAVA_HOME} / bin
fonte
Basta instalar o jre novamente . Simplesmente resolveu meu problema. (O lote de inicialização do SonarQube começou a dar esse erro após a instalação do jdk)
fonte
Vá para o painel de controle, desinstale o material relacionado ao java (feche o eclipse se aberto), depois reinstale o java e abra o eclipse, limpe os projetos.
fonte
Acabei de fazer isso no Solaris e me deparei com esse problema idêntico, onde até a versão "java-version" não funciona. Há uma razão para as versões de 64 bits da distribuição serem MUITO menores que as de 32 bits. É realmente como afirmado acima:
Em outras palavras, para obter uma instalação de 64 bits totalmente funcional, você deve primeiro executar a instalação de 32 bits e seguir com uma instalação de 64 bits se tiver uma máquina com capacidade de 64 bits ...
Então, eu executei o instalador para os 32 bits:
Em seguida, executei o instalador para o de 64 bits:
Isso me dá vários executáveis java para escolher:
Os sparcv9 java são as versões de 64 bits e funcionam com "-version" quando instalados ao lado do JDK de 32 bits.
-Dan
fonte
/usr/java
isso, portanto é claramente um Linux / Unix como OS. Você está certo de que a instalação do Java do Solaris era diferente de qualquer outro sistema operacional até o Java8. Você basicamente tive que instalar primeiro o pacote de 32 bits e, em seguida, o pacote de 64 bits em cima dele. Mas isso é tudo no passado agora que 32 bits Java não é mais suportado no Solaris, similar a dizer Mac OS X.Na janela 10, já existe um caminho presente no env, pois
C:\>ProgramData\Oracle\Java\javapath
contém links simbólicos para os executáveis.Quando instalo uma nova versão e a removo da minha variável de ambiente, todo o meu projeto começa a mostrá-la.
Eu estou usando oxigênio eclipse na janela 10
Para resolvê-lo: -
Acabei de remover o caminho
C:\>ProgramData\Oracle\Java\javapath
da variável de ambiente e adicionei um novo ambiente como JAVA_HOME e% JAVA_HOME% / bin no caminhoEu reinstalei o jdk com privilégios de administrador (exclua a pasta JRE anterior)
Meu problema foi resolvido :) Espero que ajude você :)
fonte
Isso corrigiu o problema que eu tinha no CentOS
veja também a configuração JAVA_HOME & CLASSPATH no CentOS 6
fonte
Então, continuei tentando de tudo e, finalmente, parece que a reinstalação do java após a desinstalação corrigiu o meu problema.
fonte
se houver algum problema para a versão de instalação JAVA
C: \ Onde JAVA
vai dar a localização do java que ele pega. Se você tiver outro caminho que não seja a sua instalação, remova esses arquivos ou renomeie-o (pode ser como _backup). você obterá a versão adequada do arquivo java.
fonte
Eu enfrentei o mesmo problema, instalei duas versões java, portanto, causou esse problema. para confirmar isso, clique no ícone java no painel de controle, se não abrir, o problema é o mesmo, basta desinstalar uma versão. Pedaco de bolo. obrigado.
fonte
Eu estava enfrentando o mesmo problema: Ocorreu um erro durante a inicialização da VM java / lang / NoClassDefFoundError: java / lang / Object
Siga as etapas abaixo para resolver o problema:
Etapa 1. Vá para C: \ Arquivos de Programas \ e procure a pasta Java.
Etapa 2. Exclua a pasta C: \ Arquivos de Programas \ Java.
Etapa 3. Faça o download do novo Jdk para sua versão 32 bits / 64 bits em http://www.oracle.com/technetwork/java/javase/downloads/index.html
Etapa 4. Instale o JDK
Etapa 5: agora defina JAVA_HOME como "C: \ Arquivos de Programas \ Java \ jdk1.8.0_91"
Etapa 6: Abra o prompt de comando e digite java -version.
Funciona.
fonte