Error al cargar la Biblioteca compartida JNI (JDK)

928

Cuando intento abrir Eclipse , aparece un cuadro de diálogo emergente:

Error al cargar la biblioteca compartida JNI "C: /JDK/bin/client/jvm.dll" `.

Después de esto, la fuerza de Eclipse se cierra.

Aquí hay algunos puntos que me gustaría hacer:

  • Revisé para ver si existe algo en ese camino. Sí existe
  • Mi kit de desarrollo Eclipse y Java SE son de 64 bits. Revisé mi sistema, y ​​puede manejar 64 bits.
  • He buscado este problema en Google y en Stack Overflow, y la única respuesta que encontré fue descargar las versiones de 32 bits de JDK y Eclipse.

Descargar las versiones de 32 bits es algo que solo quiero hacer como último recurso.
¿Qué se sugiere para resolver este problema?

Mxyk
fuente
¿Cuál fue exactamente el problema en su caso?
sjas
44
Para mi sorpresa, tenía 5 o más Java instalados en mi computadora. No solo eso, sino que resultó que descargué el Eclipse de 32 bits por accidente. Entonces, desinstalé todos los Java que tenía, eliminé Eclipse (Eclipse no tiene una "desinstalación") y descargué Eclipse Classic de 64 bits para mi máquina, junto con un Java de 64 bits (vea la respuesta de SPP para ese enlace).
Mxyk
2
Además: si alguien tiene problemas para "eliminar" su Eclipse (por ejemplo, la carpeta no desaparecerá sin importar cuántas veces lo elimine manualmente o mediante el símbolo del sistema), intente eliminarlo usando el modo seguro con el símbolo del sistema. No tengo idea por qué tuve que hacer esto, pero eso terminó funcionando.
Mxyk
@MikeGates También tuve ese problema, usé LockHunter. Desagradable. Hacer que esta herramienta se ejecute en Windows es demasiado trabajo.
jcollum
Eclipse / Java apesta cuando se trata de 64 bits, es una desgracia ... El mejor consejo que puedo dar es mantener solo 32 bits. Ahorre mucho tiempo.
onknows

Respuestas:

848

Necesitas un 64-bittrio:

  • 64-bit OS
  • 64-bit Java
  • 64-bit Eclipse
Peter Rader
fuente
Explicación : imagine que el código nativo (DLL) se carga en una aplicación. Ahora imagine que una función de 32 bits quiere llamar a una de 64 bits, o igual. Lo mismo con la alineación y los tamaños de datos y todo. Supongo que no tengo que decir nada más = P
imacake
@androiddeveloper, supongo que mezclas varias versiones de Java. Intenta usar solo el trío 64.
Grim
¡Correctamente! Mi computadora portátil funciona con sistema operativo x64 pero instalé x86 JDK. Acabo de instalar x64 jdk y el problema desaparece. Gracias.
Nguyen Minh Binh
Esta respuesta en realidad no es totalmente precisa. Usted no necesita ejecutar JDK de 64 bits y 64 bits Eclipse, si estás en un sistema operativo de 64 bits. El sistema operativo de 64 bits también puede ejecutar un combo de Eclipse Java + 32 bits de 32 bits. Lo que debe coincidir es la amargura de JRE / JDK y Eclipse.
E-Riz
1
@Tarik sí, es 2015 y, desafortunadamente, el Visual Page Editor (VPE) de JBoss Tools todavía espera desde hace años una actualización de 64 bits. Mire la respuesta "Pares de trabajo" a continuación, en el segundo par. JBoss Tools-Plug-in está vinculado a la misma arquitectura que descargó Eclipse. Entonces Eclipse (con JBossTools) debe ser de 32 bits, el JDK debe ser de 32 bits y el sistema operativo puede ser de 64 bits. Un eclipse de 64 bits actualmente no funciona con las herramientas JBoss ... Recuerdo un proyecto llamado JBossIDE que funciona usando Eclipse, debe usar esto en lugar de instalar JBossTools en eclipse. Vergüenza para ti JBoss, vergüenza para mozilla también.
Grim
315

Emparejamientos de trabajo de OS, JDK y Eclipse:


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

Tenía varios JDK y JRE instalados.

Cada uno de ellos tenía su propia entrada en la variable PATH, todo funcionaba más o menos.

A juzgar por las variables PATH, algunas instalaciones fueron completamente inútiles, ya que nunca se usaron. Por supuesto, los Javas "inactivos" podrían ser referenciados manualmente desde Eclipse si fuera necesario, pero nunca lo hice, así que realmente no los necesitaba. (Al menos eso pensaba en ese momento ...)

Limpié el desorden, desinstalé todos los Java actuales, instalé solo JDK + JRE 1.7 de 64 bits.

Una de las 'instalaciones' de Eclipse falló luego con el Failed to Load the JNI shared Libraryy una ruta dada en relación con el JDK recién instalado donde creía jvm.dllque estaba.

El error de Eclipse fue el único de todos mis IDEs que todavía era una versión de 32 bits en mi configuración de 64 bits.

Agregar argumentos de VM, como se menciona a menudo, eclipse.inino fue útil en mi caso (porque solo tenía el JDK / JRE incorrecto con el que relacionarme).

Tampoco pude averiguar cómo verificar si este Eclipse era una versión de 32 bits o de 64 bits (no pude buscarlo en el Administrador de tareas , ya que esta 'instalación' de Eclipse no se iniciaba. Y como tenía Ha pasado un tiempo desde que lo configuré, tampoco podía recordar su versión.)

En caso de que use un JDK más nuevo y un JRE más antiguo, también podría tener problemas, pero es más probable que java.lang.UnsupportedClassVersionErroraparezca un IIRC .

sjas
fuente
3
Solo debe usar el primer \ bin en el que se encuentra en la variable Path
ekinnear el
Mmmm, esa es siempre la pregunta ... Los documentos de Oracle dicen que solo usa el primero, pero tal vez algo más estaba siendo cambiado / ya estaba en su lugar y funcionando. Parece que siempre es algo extraño como eso.
ekinnear
8
para verificar qué versión de 32 o 64 bits, abra eclipse.ini y busque el lanzador de equinoccio utilizado (por ejemplo, org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502)
Steve Oh
Tuve este combo con el error. SO de 64 bits - JDK de 32 bits - Eclipse de 32 bits y no funciona. Lo resolví con este combo: SO de 64 bits - JDK de 64 bits - Eclipse de 64 bits (solo 64 bits). La variable% PATH% se ha actualizado para que apunte a la versión java de 64 bits. En realidad,% JAVA_HOME% se ha actualizado ya que esta variable se utiliza en los valores de la variable% PATH%.
thanos.a
1
Fue el comentario de @ekinnear lo que resolvió mi problema. No estoy seguro de por qué estaba buscando JVM.dll en mi carpeta windows / bin, pero poner la ruta correcta en su lugar parece haberlo resuelto.
James
267

Asegúrese de que su eclipse.iniarchivo incluya las siguientes líneas.

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

Mi eclipse.inipor ejemplo:

-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

El uso del sistema operativo y Eclipse tanto de 64 bits o de 32 bits mantienen igual y configuración eclipse.ini.

Su eclipse.iniarchivo se puede encontrar en su carpeta eclipse .

jayesh kavathiya
fuente
99
Esto resuelve el problema. Agregué la -vm C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exelínea a mi archivo eclipse.ini y comenzó bien. Gracias por la ayuda +1.
prolink007
1
este buen trabajo por favor, compruebe su versión de Java, ejecute java -version en una consola y comprobar que esta es la versión que está siendo utilizado por Eclipse o no
jayesh kavathiya
2
Hice esto con mi Java 6 SDK, y no funcionó. Lo intenté de nuevo, señalando mi SDK de Java 7, y funcionó. Estoy en Windows 8 de 64 bits, Java 6 y 7 (ambos de 64 bits) y Eclipse Helios (32 bits). Estaba listo para desinstalar y volver a instalar Eclipse de 64 bits, pero parece que el SDK de Java 7 incluye información nueva para ejecutar mejor las aplicaciones de 32 bits.
Ryan Shillington
99
esto funciona. pero necesita poner -vm en la parte superior del archivo ini; al menos antes de -vmargs o --launcher.xxx
pinkdawn el
2
Muy, muy importante punto que me perdí. Si usa como: "-vm C: \ ProgramFiles \ Java \ jdk1.6.0_32 \ bin \ javaw.exe" nunca funcionará correctamente "-vm C: \ Program Files \ Java \ jdk1.6.0_32 \ bin \ javaw.exe "Nueva línea después de -vm es muy importante.
School Boy
42

Este error significa que la arquitectura de Eclipse no coincide con la arquitectura del tiempo de ejecución de Java, es decir, si uno es de 32 bits, el otro debe ser el mismo y no de 64 bits.

La solución más confiable es especificar la ubicación de JVM en eclipse.ini:

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

Importante: Estas dos líneas deben aparecer antes de -vmargs. No use comillas; Se permiten espacios.

Peter Tseng
fuente
Hola, estoy trabajando desde hace algún tiempo con esta configuración .ini. ¿Debo actualizar la arquitectura a 64 bits o puedo ignorar el hecho de tener diferentes arquitecturas? Thx
Billyjoker
32

Otra opción es:

Cree un acceso directo a Eclipse.exe. Abra el acceso directo y cambie el objetivo a:

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

Para su instalación, asegúrese de que las ubicaciones apunten al directorio de instalación de Eclipse correcto y al javaw.exedirectorio de instalación correcto .

(Las versiones de 64/32 bits de Eclipse y Java deben ser las mismas, por supuesto).

Spannow
fuente
Buenas opciones, pero añadiendo al archivo ini que el anterior debería funcionar
mr.user1065741
2
No es necesario cambiar el archivo .ini. Solo use el combo de 64 bits para java y eclipse
thanos.a
29

Tengo instaladas varias versiones de Java, tanto Sun JDK como JRockit, tanto de 32 bits como de 64 bits, etc., y me encontré con este problema con una nueva instalación de Eclipse de 64 bits para Java EE (JUNO).

Lo que NO funcionó:

Trío de 64 bits como lo sugiere Peter Rader:

Estoy usando Eclipse de 64 bits en el sistema operativo de 64 bits (Windows 7).

Me aseguré de que Sun JDK 7 de 64 bits fuera la versión predeterminada de Java. Cuando escribí "java -version" desde la línea de comandos (cmd.exe), se devolvió Sun JDK 7 de 64 bits ...

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)

Esto no resolvió el problema para mí.

Lo DID trabajo:

Agregando la opción -vm a eclipse.ini como lo sugiere Jayesh Kavathiya:

Agregué lo siguiente a eclipse.ini:

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

Nota:

No tuve que desinstalar ninguna de las diversas versiones de JDK o JRE que tengo en mi máquina.

Sunny Sarkar
fuente
Tampoco tuve que desinstalar los JDK, pero elegí limpiar mi sistema para eliminar las futuras causas de error. También mencioné los argumentos de VM y expliqué por qué obviamente no podían funcionar para mí. Puede elegir cómo desea configurar su sistema, dependiendo de lo que realmente necesite.
sjas
Tuve que hacer ambas cosas, pero agregar la línea javaw.exe me llevó a instalar todo en 64 bits, de todos modos. Depende de cuánto castigo de karma debes pagar a Android.
Josh
He estado desarrollando durante años, y sin ningún cambio en mi sistema (que yo sepa), Eclipse arroja este error. Agregar la opción -vm lo solucionó para mí, sin necesidad de cambiar ninguna otra configuración o des / re / instalar nada.
Knossos
18

Para un jvm.dllarchivo faltante , podemos proporcionar la ruta del archivo dll en el eclipse.iniarchivo como

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

Aquí es importante eliminar cualquier espacio en la ruta y las comillas dobles. Funcionó para mí cuando eliminé las comillas y el espacio.

Espero que esto ayude a alguien.

Stalin Gino
fuente
1
Esto me ayudó en lugar de -vm javaw.exe
amj
11

Tuve un problema similar. Se resolvió haciendo lo siguiente.

  • Mueva Eclipse a Archivos de programa (no a Archivos de programa (x86) ).
  • Elimine la ruta a la versión de Java de 32 bits de la variable de entorno 'ruta'.

Tengo instaladas ambas versiones de Java, pero Eclipse siguió intentando utilizar la de 32 bits.

misterfrb
fuente
10

Claro, debe tener una versión compatible de JDK y Eclipse, pero también debe agregar en el eclipse.iniarchivo las siguientes líneas:

-vm
yourdrive\java\bin

Conviértalos en las dos primeras líneas de su eclipse.iniarchivo.

Deepak Tyagi
fuente
7

Como mucha gente ya aludió, este es un problema de 32 contra 64 bits tanto para Eclipse como para Java . No puede mezclar 32 y 64 bits. Dado que Eclipse no se usa JAVA_HOME, es probable que deba modificar su RUTA antes de iniciar Eclipse para asegurarse de que está utilizando no solo la versión adecuada de Java, sino también si tiene 32 o 64 bits (o modifique el archivo INI como observó Jayath) .

Si está instalando Eclipse desde un recurso compartido de la compañía, debe asegurarse de poder decir qué versión de Eclipse está descomprimiendo y descomprimir en el directorio de Archivos de programa apropiado para ayudar a realizar un seguimiento de cuál es cuál, luego cambie la RUTA (ya sea permanentemente a través de ( Windows) Panel de control -> Sistema o conjunto PATH=/path/to/32 or 64bit/java/bin;%PATH%(puede crear un archivo por lotes si no desea configurarlo en su sistema y / o variables de entorno del usuario). Recuerde, 32 bits está en los archivos de programa (x86) .

Si no está seguro, simplemente inicie Eclipse, si obtiene el error, cambie su RUTA a la otra versión 'bit' de Java e intente nuevamente. Luego mueva el directorio Eclipse al directorio apropiado de Archivos de programa .

Marc Towersap
fuente
Claramente es un problema, ya que esta página tiene 700,000 vistas actualmente ... y un año después aparentemente no hay una solución para eso que no implique hurgar en las variables de entorno solo para que se ejecute el IDE.
Ciaran Gallagher
6

Alternativamente, obtenga la misma versión "bit" de JRE y Eclipse y luego cree un nuevo acceso directo con el siguiente objetivo (reemplace la ubicación / ruta de JRE y Eclipse instaladas):

"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

Eso debería hacer el truco.

Kevin Yap
fuente
6

Puede resolver ese problema como muchos otros replicados. Necesita que Eclipse y el JDK sean de 32 bits o ambos en 64 bits . La arquitectura del sistema operativo no importa, mientras que las demás permanecen en el mismo tipo de arquitectura.

Ignacio
fuente
6

Las respuestas por encima de mí me tentaron tanto, que decidí ejecutar en seco todas las combinaciones posibles con OS, Eclipse y JVM trio. De todos modos, quien sea que esté excavando y leyendo mi publicación, verifique lo siguiente como un punto caliente (soy un usuario de Windows 7).

  1. Usted comprende que los archivos de programa y el archivo de programa (x86) son dos carpetas diferentes ... x86 representa la versión de 32 bits de los programas y la primera es la versión de 64 bits.

  2. Si tiene varias versiones de Java instaladas con diferentes versiones de lanzamiento y bitness, lo que seguramente sucederá con tantos IDE de código abierto , administradores, consolas administrativas, la mejor opción es configurar el argumento VM directamente en el eclipse.iniarchivo. Si no lo hace, Eclipse se volverá loco e intentará buscar en sí mismo, lo que no es bueno.

sayannayas
fuente
5

Una de las formas fáciles de resolverlo es copiar la jrecarpeta desde el JDK instalado en la carpeta de instalación de Eclipse. Asegúrese de que el JDK desde el que copia es la misma arquitectura que su instalación de Eclipse.

Tuve que configurar mi máquina de esa manera, porque ejecuto Eclipse y Appcelerator Titanium Studio en mi máquina. Studio necesita Java de 32 bits, mientras que Eclipse necesita 64 bits.

Mike Starov
fuente
Hice lo mismo hace mucho tiempo, pero para eclipse-jee-juno-SR1-win32 y Java6, esta vez no pude hacerlo funcionar. ¿También editó el eclipse.ini con una ruta absoluta al jre?
user77115
También tengo Eclipse 64 width jdk 7 64bit, pero titanio alto no puede cargar jni dll compartido.
realtebo
Debido a las locas actualizaciones automáticas de Windows, cada vez que hay una actualización para JAVA, bloquea el lanzamiento de mi Eclipe. La solución anterior es la forma más fácil de trabajar de forma independiente sin preocuparse por las actualizaciones automáticas. ¡Gracias!
Jyo the Whiff
4

Sí, solo asegúrese de que sus versiones de Eclipse y JDK sean ambas de 64 bits. Solo para asegurarse de que todo esté correcto, desinstale JDK e instálelo en Archivos de programa y no en Archivos de programa (x86) . Al menos eso resolvió mi problema.

Jeena
fuente
4

Simplemente verifique la variable de entorno PATH. En Mi PC -> Propiedades -> Configuración avanzada del sistema -> Variables de entorno -> (ventana superior izquierda "Variables de usuario para" algún nombre de PC "") simplemente verifique la variable PATH. Si no existe, créelo con lo siguiente -> C: \ Archivos de programa (x86) \ Java \ jre7 \ bin <-

Me enfrenté al mismo problema después de haber actualizado mi Eclipse. Descubrí que la ruta pedía la versión de 64 bits, pero tenía la ruta de 32 bits en dif. Fue útil para mi. PD: Tengo un sistema operativo de 64 bits, JRE de 32 bits y Eclipse de 32 bits. Todo funciona bien :)

usuario1600401
fuente
4

Debería desinstalar todos los [JRE] [1] antiguos y luego instalar el más nuevo ... Tuve el mismo problema y ahora lo resuelvo. He:

Mejor instalar Jre 6 32 bit. Realmente funciona.

Marcin Erbel
fuente
3

Descargó JVM de 64 bits del sitio, lo instaló manualmente y actualizó la variable de ruta del sistema. Eso resolvió el problema.

  1. La JVM predeterminada instalada en mi sistema estaba en "C: \ Archivos de programa
    (x86) \ Java \ jre7"
  2. JVM instalado manualmente se instaló en "C: \ Archivos de programa \ Java \ jre7" y después de actualizar este paté a la variable de ruta del sistema funcionó.
Satya
fuente
3

Gracias misterfrb , me di cuenta de que Eclipse estaba dando este error, porque acababa de instalar Oracle 10g Developer suite y estaba buscando el jvm.dllarchivo en la C:\DevSuiteHome_1carpeta (debo haber optado por instalar JDK nuevamente junto con la suite de desarrollador).

Después de eliminar las líneas DevSuiteHome de la variable de rutas y agregar la ubicación de corrección para 64 bits jvm.dll(no estoy seguro de si esto era necesario, no lo intenté sin), Eclipse funcionó nuevamente, y la suite Developer también lo hace.

Unegma
fuente
3

Simple, tengo un SO de 64 bits, Eclipse de 32 bits y ambos JDK 32 y 64 instalados ... Acabo de desinstalar el JDK de 64 bits y Eclipse funciona bien.

PushkarHJoshi
fuente
3

Tuve el mismo problema después de actualizar de Java 6 a Java 7. Después de eliminar Java 6 (64 bits) y reinstalar Java 7 (64 bits), Eclipse funcionó. :)

Supun Sameera
fuente
3

Es crucial agregar el parámetro -vm y su valor en 2 líneas AL COMIENZO del eclipse.ini

-vm C: \ Archivos de programa \ Java \ jdk1.7.0_45 \ bin \ javaw.exe

Rolf
fuente
3

Quiero proporcionar otra solución para este error, especialmente para quienes desean usar Eclipse de 32 bits y 64 bits en un sistema.

Eclipse se iniciará utilizando JRE / JDK en el jresubdirectorio si existe. (STS u otro IDE basado en eclipse también admite esta función ...)

La solución es crear una unión de directorios usando el mklink.execomando que existe en Windows Vista o una versión más reciente ( junction.exe ofrece una función similar para Windows 2000 / XP)
Abra la ventana de línea de comandos y ejecute el siguiente comando:

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

Por supuesto, si el Eclipse es para Windows de 64 bits, la arquitectura de JDK/JRE debe ser la misma.

Asumir:

  • Eclipse for windows x86_64está instalado en d: \ devTool \ eclipse
  • JDK for windows x64está instalado en C: \ Archivos de programa \ Java \ jdk1.8.0

El comando para crear la jrecarpeta será:

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

Por cierto, eliminar la unión del directorio NO eliminará ningún archivo. Si crea un enlace incorrecto, puede eliminarlo utilizando el explorador de archivos o el rmdircomando.

rmdir "d: \ devTool \ eclipse \ jre"

Beck Yang
fuente
2

Asegúrese de iniciar Eclipse con derechos de administrador.

Aquí para ayudar
fuente
2

Si usa un trío completo de 64 bits y aún no funciona (he encontrado este problema al iniciar Android Monitor en Intellij Idea), probablemente se esté utilizando jvm.dll incorrecto en lugar de lo que su Java espera. Solo sigue estos pasos:

  1. Encuentre el jvm.dll en su directorio JRE: C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. Encuentre el jvm.dll en su directorio JDK: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. Copie el jvm.dlldirectorio de JRE en su directorio JDK y sobrescriba el jvm.dll en JDK.

No olvide hacer una copia de seguridad, por si acaso. No es necesario instalar ni desinstalar nada relacionado con Java.

rootpd
fuente
2

Lo mismo se me ocurrió. Tenía Eclipse de 64 bits, pero mi JDK era de 32 bits. Así que instalé la versión de 64 bits y está bien ahora.

felipe.zkn
fuente
2

No estoy seguro de por qué, pero tenía el jre instalado en mi directorio c: \ windows y java.exe y javaw.exe dentro de mi directorio windows \ system32.

Obviamente, estos directorios obtuvieron prioridad incluso DESPUÉS de agregar el indicador -vm a mi archivo eclipse.ini.

Eliminarlos de aquí solucionó el problema para mí.

Guy Lowe
fuente
2

Ha cambiado la versión adecuada de JAVA_HOME y PATH en variables de entorno.

Sreedhar GS
fuente
1

En la página de descarga de Eclipse, debe escribirse "JRE 32 bits" o "JRE 64 bits" y no "Windows 32 bits" o "Windows 64 bits".

Asegúrese de utilizar la versión correcta compatible con su JDE, como se respondió anteriormente.

A_rnO
fuente