Falha ao carregar a Biblioteca Compartilhada JNI (JDK)


928

Quando tento abrir o Eclipse , uma caixa de diálogo pop-up informa:

Falha ao carregar a biblioteca compartilhada JNI "C: /JDK/bin/client/jvm.dll" `.

Depois disso, a força do Eclipse se fecha.

Aqui estão alguns pontos que gostaria de destacar:

  • Eu verifiquei se havia algo nesse caminho. Existe.
  • Meu Eclipse e Java SE Development Kit são ambos de 64 bits. Eu verifiquei meu sistema, e ele pode lidar com 64 bits.
  • Eu procurei esse problema no Google e no Stack Overflow, e a única resposta que encontrei foi baixar as versões de 32 bits do JDK e Eclipse.

Baixar as versões de 32 bits é algo que só quero fazer como último recurso.
O que seria sugerido para resolver esse problema?


Qual foi exatamente o problema no seu caso?
— S3

4
Para minha surpresa, eu tinha 5 ou mais Java instalados no meu computador. Não só isso, mas aconteceu que eu baixei o Eclipse de 32 bits por acidente. Portanto, desinstalei todos os Java que eu tinha, excluí o Eclipse (o Eclipse não possui uma "desinstalação") e baixei o Eclipse Classic de 64 bits para minha máquina, juntamente com um Java de 64 bits (consulte a resposta do SPP para esse link).
— Mxyk

2
Além disso: se alguém tiver problemas para "excluir" o Eclipse (por exemplo, a pasta não desaparecerá, não importa quantas vezes você a remova manualmente ou via prompt de comando), tente excluí-la usando o modo de segurança com o prompt de comando. Não faço ideia por que eu tive que fazer isso, mas isso acabou funcionando.
— Mxyk

@ MikeGates Eu também tive esse problema, usei o LockHunter. Obnóxio. Fazer com que esta ferramenta seja executada no Windows é muito trabalhoso.
— Jcollum

Eclipse / Java é péssimo quando se trata de 64 bits, é uma desgraça. O melhor conselho que posso dar é manter apenas 32 bits. Economize muito tempo.
— Jul13

Respostas:


848

Você precisa de um 64-bittrio:

  • 64-bit OS
  • 64-bit Java
  • 64-bit Eclipse

Explicação : Imagine o código nativo (DLL) sendo carregado em um aplicativo. Agora imagine que uma função de 32 bits queira chamar uma de 64 bits, ou similar. O mesmo acontece com o alinhamento e os dados e tudo. Eu acho que eu não tenho que dizer mais nada = P
— imacake

@androiddeveloper eu acho que você mistura várias versões java. Tente usar apenas o trio de 64.
— Grim

Corretamente! Meu laptop está executando no sistema operacional x64, mas eu instalei o x86 JDK. Acabei de instalar o x64 jdk e o problema desaparece. Obrigado.
— Nguyen Minh Binh

Esta resposta não é totalmente exata. Você não precisa executar o JDK de 64 bits e o Eclipse de 64 bits se estiver em um sistema operacional de 64 bits. O SO de 64 bits também pode executar uma combinação de Java de 32 bits + Eclipse de 32 bits. O que deve corresponder é a fragilidade do JRE / JDK e Eclipse.
— E-Riz

1
@Tarik sim, é 2015 e infelizmente o Visual Page Editor (VPE) do JBoss Tools ainda aguarda há anos uma atualização de 64 bits. Veja a resposta "Pares de trabalho" abaixo, no segundo par. O JBoss Tools-Plug-in está vinculado à mesma arquitetura que você baixou do Eclipse. Portanto, o Eclipse (com o JBossTools) deve ter 32 bits, o JDK deve ter 32 bits e o sistema operacional pode ter 64 bits. Atualmente, um eclipse de 64 bits não funciona com o JBoss Tools .... Lembro-me de um projeto chamado JBossIDE que funciona usando o Eclipse. Você deve usá-lo em vez de instalar o JBossTools no eclipse. Que vergonha para o JBoss, que vergonha para o mozilla também.
— 21715 Grim

315

Trabalhando emparelhamentos de SO, JDK e Eclipse:


  • 32-bit OS | 32-bit JDK | 32-bit Eclipse (apenas 32 bits )
  • 64-bit OS | 32-bit JDK | 32-bit Eclipse
  • 64-bit OS | 64-bit JDK| 64bit Eclipse (apenas 64 bits )

Eu tinha vários JDKs e JREs instalados.

Cada um deles tinha sua própria entrada na variável PATH, todos estavam trabalhando mais ou menos.

A julgar pelas variáveis ​​PATH, algumas instalações foram completamente inúteis, pois nunca foram usadas. Obviamente, o Javas "inativo" poderia ser referenciado manualmente a partir do Eclipse, se eu precisasse, mas nunca fiz isso, então realmente não precisava deles. (Pelo menos eu pensava naquele momento ...)

Limpei a bagunça, desinstalei todos os Java atuais, instalei apenas o JDK + JRE 1.7 de 64 bits.

Uma das 'instalações' do Eclipse falhou posteriormente com o Failed to Load the JNI shared Librarye um determinado caminho em relação ao JDK instalado fresco onde ele pensava jvm.dllestar.

O Eclipse com falha foi o único de todos os meus IDEs que ainda era uma versão de 32 bits na minha configuração de 64 bits.

A adição de argumentos de VM, como tantas vezes mencionado, eclipse.ininão foi útil no meu caso (porque eu tinha apenas o JDK / JRE errado para me relacionar.)

Também não consegui descobrir como verificar se esse Eclipse era uma versão de 32 ou 64 bits (não consegui procurá-lo no Gerenciador de Tarefas , pois essa 'instalação' do Eclipse não seria inicializada. faz um tempo desde que eu o configurei, também não conseguia me lembrar de sua versão.)

Caso você use um JDK mais novo e um JRE mais antigo, você também pode estar com problemas, mas é mais provável que java.lang.UnsupportedClassVersionErrorapareça, IIRC .


3
Ele deve usar apenas o primeiro \ bin a que se refere a variável Path
— eearperto de

Mmmm, essa é sempre a questão ... Os documentos do Oracle dizem que ele usa apenas o primeiro, mas talvez algo mais estivesse sendo alterado / já estivesse no local e funcionando. Parece que é sempre algo estranho assim.
— Ekinperto de 23/07/12

8
para verificar qual versão de 32 ou 64 bits, abra o eclipse.ini e procure o iniciador do equinócio usado (por exemplo, org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502)
— Steve Oh

Eu tive essa combinação com o erro. SO de 64 bits - JDK de 32 bits - Eclipse de 32 bits e não funciona. Eu o resolvi com este combo: SO de 64 bits - JDK de 64 bits - Eclipse de 64 bits (apenas 64 bits). A variável% PATH% foi atualizada para apontar para a versão java de 64 bits. Na verdade, o% JAVA_HOME% foi atualizado, pois essa variável é usada nos valores da variável% PATH%.
— thanos.a

1
Foi o comentário de @ekinnear que resolveu meu problema. Não sei por que ele estava procurando o JVM.dll na minha pasta windows / bin, mas colocar o caminho correto no lugar parece ter resolvido.
— James

267

Verifique se o seu eclipse.iniarquivo inclui as seguintes linhas.

-vm
C:\path\to\64bit\java\bin\javaw.exe

Meu eclipse.inipor exemplo:

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.2.R36x_v20101222
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
-vm
C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exe
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

Use o SO e o Eclipse, ambos de 64 bits ou ambos de 32 bits, mantendo a mesma configuração eclipse.ini.

Seu eclipse.iniarquivo pode ser encontrado na sua pasta eclipse .


9
Isso resolve o problema. Eu adicionei a -vm C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exelinha ao meu arquivo eclipse.ini e ele começou muito bem. Obrigado pela ajuda +1.
— prolink007

1
este belo trabalho por favor, verifique a sua versão do Java, execute java -version em um console e verifique se esta é a versão que está sendo usado pelo Eclipse ou não
— jayesh kavathiya

2
Fiz isso com meu Java 6 SDK e não funcionou. Eu tentei novamente, apontando para o meu Java 7 SDK, e funcionou. Estou no Windows 8 de 64 bits, Java 6 e 7 (ambos de 64 bits) e Eclipse Helios (32 bits). Eu estava pronto para desinstalar e reinstalar o Eclipse de 64 bits, mas parece que o SDK do java 7 inclui alguma nova inteligência para executar aplicativos de 32 bits melhor.
— Ryan Shillington

9
isso funciona. mas precisa colocar -vm na parte superior do arquivo ini; pelo menos antes -vmargs ou --launcher.xxx
— pinkdawn

2
Muito, muito importante ponto que eu perdi. Se você usar como: "-vm C: \ Arquivos de programas \ Java \ jdk1.6.0_32 \ bin \ javaw.exe", nunca funcionará corretamente "-vm C: \ Arquivos de programas \ Java \ jdk1.6.0_32 \ bin \ javaw.exe "A nova linha após a -vm é muito importante.
— School Boy


42

Esse erro significa que a arquitetura do Eclipse não corresponde à arquitetura do tempo de execução Java, ou seja, se um é de 32 bits, o outro deve ser o mesmo, e não de 64 bits.

A correção mais confiável é especificar o local da JVM no eclipse.ini:

-vm
C:\Program Files (x86)\Java\jdk1.7.0_55\bin\javaw.exe

Importante: Essas duas linhas devem vir antes de -vmargs. Não use aspas; espaços são permitidos.


Oi, estou trabalhando há algum tempo com esta configuração .ini, devo atualizar a arquitetura para 64 bits ou posso ignorar o fato de ter arquiteturas diferentes? Thx
— Billyjoker

32

Outra opção é:

Crie um atalho para o Eclipse.exe. Abra o atalho e altere o destino para:

"C:\Program Files\eclipse\eclipse.exe" -vm "c:\Program Files\Java\jdk1.7.0_04\bin\javaw.exe"

Para sua instalação, verifique se os locais apontam para o diretório de instalação correto do Eclipse e javaw.exe diretório de instalação .

(As versões de 64/32 bits do Eclipse e Java precisam ser as mesmas, é claro.)


Boas opções, mas adicioná-lo ao arquivo ini como acima deve funcionar
— mr.user1065741

2
Não há necessidade de alterar o arquivo .ini. Basta usar o combo de 64 bits para java e eclipse
— thanos.a

29

Eu tenho várias versões do Java instaladas, o Sun JDK e o JRockit, de 32 e 64 bits, etc., e deparei-me com esse problema com uma nova instalação do Eclipse para Java EE (JUNO) de 64 bits.

O que NÃO funcionou:

Trio de 64 bits, conforme sugerido por Peter Rader:

Estou usando o Eclipse de 64 bits no sistema operacional de 64 bits (Windows 7).

Assegurei que o Sun JDK 7 de 64 bits fosse a versão java padrão. Quando digitei "java -version" na linha de comando (cmd.exe), o Sun JDK 7 de 64 bits foi retornado ...

java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

Isso não resolveu o problema para mim.

Que DID funcionou:

Adicionando a opção -vm ao eclipse.ini, conforme sugerido por Jayesh Kavathiya:

Adicionei o seguinte ao eclipse.ini:

-vm
C:/apps/java/jdk7-64bit/bin/javaw.exe

Nota:

Não precisei desinstalar nenhuma das várias versões do JDK ou JRE que tenho na minha máquina.


Também não precisei desinstalar o JDK, mas optei por limpar meu sistema para eliminar futuras causas de erro. Eu também mencionei os argumentos da VM e expliquei por que eles obviamente não podiam funcionar para mim. É sua escolha como você deseja configurar seu sistema, dependendo do que você realmente precisa.
— S12 /

Eu tive que fazer as duas coisas, mas adicionar a linha javaw.exe me levou a instalar tudo em 64 bits, de qualquer maneira. Depende de quanto punição de karma você deve pagar ao android.
— 21413 Josh

Estou desenvolvendo há anos e, sem nenhuma alteração no meu sistema (que eu saiba), o Eclipse lança esse erro. A adição da opção -vm resolveu para mim, sem a necessidade de alterar outras configurações ou desinstalar / reinstalar qualquer coisa.
— Knossos

18

Para um jvm.dllarquivo ausente , podemos fornecer o caminho do arquivo DLL no eclipse.iniarquivo como

-vm
C:\Progra~1\Java\jdk1.6.0_38\jre\bin\server\jvm.dll

Aqui é importante remover qualquer espaço no caminho e as aspas duplas. Funcionou para mim quando removi as aspas e o espaço.

Eu espero que isso ajude alguém.


1
Isso me ajudou em vez de -vm javaw.exe
— amj

11

Eu tive um problema parecido. Foi resolvido fazendo o seguinte.

  • Mova o Eclipse para Arquivos de Programa (não para Arquivos de Programa (x86) ).
  • Remova o caminho para a versão de 32 bits do Java da variável de ambiente 'path'.

Eu tenho as duas versões do Java instaladas, mas o Eclipse continuou tentando usar a versão de 32 bits.


10

Claro, você precisa ter uma versão compatível do JDK e Eclipse, mas também precisa adicionar no eclipse.iniarquivo as linhas abaixo:

-vm
yourdrive\java\bin

Faça delas as duas primeiras linhas do seu eclipse.iniarquivo.


7

Como muitas pessoas já mencionaram, esse é um problema de 32 x 64 bits para Eclipse e Java . Você não pode misturar 32 e 64 bits. Como o Eclipse não usaJAVA_HOME , você provavelmente precisará alterar seu PATH antes de iniciar o Eclipse para garantir que esteja usando não apenas a versão apropriada do Java, mas também 32 ou 64 bits (ou modifique o arquivo INI como Jayath observou) .

Se você estiver instalando o Eclipse a partir de um compartilhamento da empresa, verifique se você está descompactando qual versão do Eclipse está descompactada e descompacte no diretório apropriado dos Arquivos de Programas para ajudar a controlar qual é qual e, em seguida, altere o PATH (permanentemente via ( Windows) Painel de controle -> Sistema ou conjunto PATH=/path/to/32 or 64bit/java/bin;%PATH%(talvez crie um arquivo em lotes, se você não quiser defini-lo em seu sistema e / ou variáveis ​​de ambiente do usuário) Lembre-se de 32 bits nos arquivos de programas (x86) .

Se não tiver certeza, basta iniciar o Eclipse, se você receber o erro, altere seu PATH para a outra versão 'bit' de Java e tente novamente. Em seguida, mova o diretório Eclipse para o diretório apropriado Arquivos de Programas .


É claramente um problema, pois esta página tem 700k visualizações atualmente ... e um ano depois, aparentemente não há uma correção para isso que não envolva mexer nas variáveis ​​de ambiente apenas para que o IDE seja executado!
— Ciaran Gallagher

6

Como alternativa, obtenha a mesma versão "bit" do JRE e Eclipse e crie um novo atalho com o destino abaixo (substitua o local / caminho JRE e Eclipse instalado):

"C:\studio\eclipse.exe" -vm "C:\Program Files\Java\jre7\bin\server\jvm.dll" eclipse.vm="C:\Program Files\Java\jre7\bin\server\jvm.dll" java.home="C:\Program Files\Java\jre7" java.runtime.version=1.7.0

Isso deve fazer o truque.


6

Você pode resolver esse problema como muitos outros replicados. Você precisa que o Eclipse e o JDK tenham 32 bits ou ambos em 64 bits . A arquitetura do sistema operacional não importa, enquanto os outros permanecem no mesmo tipo de arquitetura.


6

As respostas acima de mim me deixaram tão tentada que decidi executar todas as combinações possíveis com o trio OS, Eclipse e JVM . De qualquer forma, quem estiver pesquisando e lendo minha postagem, verifique o seguinte como um hot spot (eu sou usuário do Windows 7).

  1. Você entende que Arquivos de programas e Arquivos de programas (x86) são duas pastas diferentes ... x86 significa a versão de 32 bits dos programas e a primeira é a versão de 64 bits.

  2. Se você tiver várias versões do Java instaladas com diferentes versões de testemunha e versão, o que acontecerá com tantos IDEs de código aberto , gerenciadores, consoles administrativos, a melhor opção é definir o argumento da VM diretamente no eclipse.iniarquivo. Caso contrário, o Eclipse ficará louco e tentará pesquisar por si mesmo, o que não é bom.


5

Uma das maneiras fáceis de resolver isso é copiar a jrepasta do JDK instalado na pasta de instalação do Eclipse. Verifique se o JDK do qual você copia é da mesma arquitetura que sua instalação do Eclipse.

Eu tive que configurar minha máquina dessa maneira, porque eu executo o Eclipse e o Appcelerator Titanium Studio na minha máquina. O Studio precisa de Java de 32 bits, enquanto o Eclipse precisa de 64 bits.


Fiz a mesma coisa há muito tempo, mas para eclipse-jee-juno-SR1-win32 e Java6, não consegui fazê-lo funcionar desta vez. Você também editou o eclipse.ini com um caminho absoluto para o jre?
— user77115

Eu também tenho Eclipse 64 largura jdk 7 64bit, mas titânio alto me é incapaz de carregar a DLL compartilhada jni.
— Realtebo 19/04

Por causa das loucas atualizações automáticas do Window, sempre que há uma atualização para JAVA, ele bloqueia o lançamento do meu Eclipe. A solução acima é a maneira mais fácil de trabalhar independentemente, sem se importar com as atualizações automáticas. Obrigado!
— Jyo the Whiff

4

Sim, verifique se as versões do Eclipse e JDK são de 64 bits. Apenas para garantir que tudo esteja correto, desinstale o JDK e instale-o em Arquivos de Programas e não em Arquivos de Programas (x86) . Pelo menos isso resolveu meu problema.


4

Basta verificar a variável de ambiente PATH. Em Meu computador -> Propriedades -> Configurações avançadas do sistema -> Variáveis ​​de ambiente -> (janela superior esquerda "Variáveis ​​de usuário para" algum nome do PC ""), basta verificar a variável PATH. Se não existir, crie-o com o seguinte -> C: \ Arquivos de Programas (x86) \ Java \ jre7 \ bin <-

Fui confrontado com o mesmo problema depois de atualizar meu Eclipse. Eu descobri que o caminho pedia a versão de 64 bits, mas eu tinha o caminho de 32 bits em dif. Foi útil para mim. PS: Eu tenho um SO de 64 bits, JRE de 32 bits e Eclipse de 32 bits. Tudo funciona bem :)


4

Você deve desinstalar todos os [JREs] antigos [1] e instalar o mais novo ... Eu tive o mesmo problema e agora o resolvo. Eu tenho:

Melhor instalar o Jre 6 de 32 bits. Realmente funciona.


3

Baixou a JVM de 64 bits do site, instalou-a manualmente e atualizou a variável de caminho do sistema. Isso resolveu o problema.

  1. A JVM padrão está instalada no meu sistema estava em "C: \ Arquivos de Programas
    (x86) \ Java \ jre7"
  2. A JVM instalada manualmente foi instalada em "C: \ Arquivos de Programas \ Java \ jre7" e, após atualizar esse patê para a variável de caminho do sistema, ela funcionou.

3

Obrigado misterfrb , percebi que o Eclipse estava dando esse erro, porque havia acabado de instalar o Oracle 10g Developer Suite e ele estava procurando o jvm.dllarquivo na C:\DevSuiteHome_1pasta (devo ter optado por instalar o JDK novamente junto com o Developer Suite).

Depois de remover as linhas DevSuiteHome da variável caminhos e adicionar o local de correção para 64 bits jvm.dll(não tendo certeza se isso era necessário, não foi possível), o Eclipse funcionou novamente e o pacote Developer ainda o faz.


3

Simples, tenho um SO de 64 bits, Eclipse de 32 bits e o JDK 32 e 64 instalado ... Acabei de desinstalar o JDK de 64 bits e o Eclipse está funcionando bem.


3

Eu tive o mesmo problema após atualizar do Java 6 para o Java 7. Depois de remover o Java 6 (64 bits) e reinstalar o Java 7 (64 bits), o Eclipse funcionou. :)


3

É crucial adicionar o parâmetro -vm e seu valor em 2 linhas NO INÍCIO do eclipse.ini

-vm C: \ Arquivos de programas \ Java \ jdk1.7.0_45 \ bin \ javaw.exe


3

Desejo prever outra solução para esse erro, especialmente para quem deseja usar o Eclipse de 32 e 64 bits em um sistema.

O Eclipse inicializará usando o JRE / JDK no jresubdiretório, se existir. (STS ou outro IDE baseado em eclipse também suporta esse recurso ...)

A solução é criar junção de diretório usando o mklink.execomando existente no Windows Vista ou versão mais recente ( junction.exe oferece função semelhante para o Windows 2000 / XP)
Abra as janelas da linha de comando e execute o seguinte comando:

mklink / j "$ ECLIPSE-HOME / jre" "$ JDK_or_JRE_home"

Obviamente, se o Eclipse for para Windows de 64 bits, a arquitetura do JDK/JRE deve ser a mesma.

Presumir:

  • Eclipse for windows x86_64está instalado em d: \ devTool \ eclipse
  • JDK for windows x64está instalado em C: \ Arquivos de Programas \ Java \ jdk1.8.0

O comando para criar a jrepasta será:

mklink / j "d: \ devTool \ eclipse \ jre" "C: \ Arquivos de programas \ Java \ jdk1.8.0"

BTW, excluir junção de diretório NÃO excluirá nenhum arquivo. Se você criar um link errado, poderá excluí-lo usando o gerenciador de arquivos ou o rmdircomando.

rmdir "d: \ devTool \ eclipse \ jre"



2

Se você usar um trio completo de 64 bits e ele ainda não funcionar (eu vim para esse problema ao iniciar o Android Monitor no Intellij Idea), provavelmente o jvm.dll provavelmente está sendo usado em oposição ao que seu java espera. Basta seguir estes passos:

  1. Encontre o jvm.dll no diretório JRE: C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. Encontre o jvm.dll no diretório JDK: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. Copie o jvm.dlldiretório do JRE para o diretório JDK e substitua o jvm.dll no JDK.

Não se esqueça de fazer um backup, apenas por precaução. Não há necessidade de instalar ou desinstalar nada relacionado ao Java.


2

O mesmo me ocorreu. Eu tinha o Eclipse de 64 bits, mas meu JDK era de 32 bits. Então, instalei a versão de 64 bits e agora está tudo bem.


2

Não sei por que, mas eu tinha o jre instalado no meu diretório c: \ windows e java.exe e javaw.exe dentro do meu diretório windows \ system32.

Obviamente, esses diretórios estavam obtendo prioridade mesmo após a adição do sinalizador -vm ao meu arquivo eclipse.ini.

Excluí-los daqui corrigiu o problema para mim.


2

Você alterou a versão adequada do JAVA_HOME e PATH nas variáveis ​​ambientais.


1

Na página de download do Eclipse, ele deve estar escrito "JRE 32 bits" ou "JRE 64 bits" e não "Windows 32 bits" ou "Windows 64 bits".

Certifique-se de usar a versão correta compatível com o seu JDE, conforme respondido anteriormente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.