无法加载JNI共享库(JDK)

问题

当我尝试打开Eclipse时,弹出对话框显示:

>无法加载JNI共享库“C:/JDK/bin/client/jvm.dll”。

在此之后,Eclipse强制关闭。

以下是我想说的几点:

  • 我检查了一下在这条路上是否有任何东西存在。它确实存在。
  • 我的Eclipse和Java SE开发工具包都是64位的。我检查了我的系统,它可以处理64位。
  • 我在Google和Stack Overflow上搜索了这个问题,我发现的唯一答案是下载32位版本的JDK和Eclipse。

下载32位版本是我唯一想做的事情。
这个问题该怎么解决?


#1 热门回答(804 赞)

你需要一个64位三人组:

  • 64位操作系统
  • 64位Java
  • 64位Eclipse

#2 热门回答(293 赞)

#OS,JDK和Eclipse的工作配对:

  • 32位操作系统 - 32位JDK - 32位Eclipse(仅限32位)
  • 64位操作系统 - 32位JDK - 32位Eclipse
  • 64位操作系统 - 64位JDK - 64位Eclipse(仅限64位)

我安装了几个JDK和JRE。

他们每个人在PATH变量中都有自己的条目,全部或多或少地工作。

从PATH变量判断,一些设备完全没用,因为它们从未被使用过。当然,如果需要的话,可以从Eclipse中手动引用“非活动”Javas,但我从未这样做过,所以我真的不需要它们。 (至少我那时候是这么想的......)

我清理了这个烂摊子,卸载了所有当前的Java,只安装了JDK JRE 1.7 64位。

其中一个Eclipse'安装'之后失败了“无法加载JNI共享库”和相对于新安装的JDK的给定路径,它认为jvm.dll是。
失败的Eclipse是我所有IDE中唯一仍然是32位版本的全部64位版本。
eclipse.ini中经常提到的那样添加VM参数在我的情况下是没有用的(因为我只有错误的JDK / JRE来关联。)

我也无法知道如何检查这个Eclipse是32位还是64位版本(我无法在Task Manager中查找它,因为这个Eclipse的'安装'不会启动,而且由于它是一个虽然我已经设置好了,但我也记不清它的版本。)

如果您使用较新的JDK并且较旧的版本也可能会遇到问题,但是更可能出现java.lang.UnsupportedClassVersionErrorIIRC


#3 热门回答(254 赞)

确保你的eclipse.ini文件包含以下几行。

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

例如我的eclipse.ini:

-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

使用OS和Eclipse 64位或两个32位保持不变,configeclipse.ini

你的eclipse.ini文件可以在你的eclipse文件夹中找到。