无法加载JNI共享库(JDK)

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

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

之后,Eclipse部队closures。

以下是我想说的几点:

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

下载32位版本是我只想做的最后一招。
会有什么build议来解决这个问题?

你需要一个64位三重奏:

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

OS,JDK和Eclipse的工作配对:


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

我安装了几个JDK和JRE。

他们每个人在PATHvariables中都有自己的条目,所有的都在或多或less地工作。

从PATHvariables来看,一些设备完全没用,因为它们从来没有被使用过。 当然,如果需要的话,可以从Eclipse内部手动引用“惰性”Java,但是我从来没有这样做,所以我真的不需要它们。 (至less我那时候是这么想的)

我清理了一塌糊涂,卸载了目前所有的Java,只安装了JDK + JRE 1.7 64位。

其中一个Eclipse的“安装”失败之后, Failed to Load the JNI shared Library和一个给定的path,相对于新安装的JDK,它认为jvm.dll是。

发生故障的Eclipse是我所有IDE中唯一一个在我64位的设置上仍然是32位版本的IDE。

在我的情况下,在eclipse.ini中添加虚拟机参数(就像我经常提到的那样)是没有用的(因为我只有错误的JDK / JRE关联)。

我也无法find如何检查这个Eclipse是32位还是64位版本(我无法在任务pipe理器中查找它,因为这个Eclipse的“安装”不会启动。已经有一段时间了,我也不记得它的版本。)

如果你使用一个更新的JDK和一个较旧的JRE,你也可能会遇到麻烦,但是更有可能出现java.lang.UnsupportedClassVersionError , IIRC 。

确保你的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 

使用操作系统和Eclipse 64位或两个32位保持不变,并configurationeclipse.ini

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

我有同样的问题

我通过安装64位JVM解决了这个问题

http://www.java.com/en/download/manual.jsp

另一个select是:

创buildEclipse.exe的快捷方式。 打开快捷方式并将目标更改为:

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

对于您的安装,请确保位置指向正确的Eclipse安装目录和正确的javaw.exe安装目录。

(当然,Eclipse和Java的64/32位版本需要相同。)

我安装了多个版本的Java,包括Sun JDK和JRockit(都是32位和64位等),并且全新安装了64位Eclipse for Java EE(JUNO)。

什么都不起作用:

Peter Raderbuild议的64位三重奏:

我在64位操作系统上使用64位Eclipse(Windows 7)。

我确保Sun JDK 7 64位是默认的Java版本。 当我从命令行(cmd.exe)键入“java -version”时,Sun JDK 7 64位被返回…

 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) 

这并没有解决我的问题。

什么DID工作:

向Jayesh Kavathiyabuild议的eclipse.ini添加-vm选项:

我将以下内容添加到eclipse.ini中:

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

注意:

我不必卸载我机器上的任何JDK或JRE版本。

这个错误意味着Eclipse的体系结构与Java运行时的体系结构不匹配,即,如果一个是32位的,另一个必须是相同的,而不是64位。

最可靠的解决方法是在eclipse.ini中指定JVM位置:

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

重要:这两行必须 -vmargs 之前 。 不要用引号; 空间是允许的。

对于缺lessjvm.dll文件,我们可以在eclipse.ini文件中提供dll文件的path

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

这里删除path和双引号中的空格是很重要的。 它为我工作时,我删除了报价和空间。

我希望它可以帮助别人。

我有一个类似的问题。 它被解决了以下。

  • 将Eclipse移动到程序文件 (而不是程序文件(x86) )。
  • 从“path”环境variables中删除32位Java版本的path。

我安装了两个版本的Java,但Eclipse一直试图使用32位版本。

当然,您需要有一个兼容的JDK和Eclipse版本,但是您还需要在eclipse.ini文件中添加以下eclipse.ini行:

 -vm yourdrive\java\bin 

使它们成为eclipse.ini文件的前两行。

正如许多人已经提到的,这对于Eclipse和Java来说都是32位和64位的问题。 你不能混淆32位和64位。 由于Eclipse不使用JAVA_HOME ,因此在启动Eclipse之前,您可能必须更改PATH,以确保不仅使用适当的Java版本,而且还要使用32位或64位(或将INI文件修改为Jayath )。

如果您从公司共享中安装Eclipse,则应确保可以知道要解压哪个Eclipse版本,然后解压缩到相应的Program Files目录以帮助跟踪哪个是哪个,然后更改PATH(永久地通过( Windows)控制面板 – >系统或设置PATH=/path/to/32 or 64bit/java/bin;%PATH% (也许创build一个batch file,如果你不想在你的系统和/或用户环境请记住,32位是在程序文件(x86)中

如果不确定,只需启动Eclipse,如果出现错误,请将PATH更改为其他“Java”版本,然后重试。 然后将Eclipse目录移至相应的Program Files目录。

或者,获取JRE和Eclipse的相同“位”版本,然后用下面的目标创build一个新的快捷方式(replace已安装的JRE和Eclipse位置/path):

 "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 

这应该够了吧。

你可以解决这个问题,许多其他复制。 Eclipse和JDK需要32位或64位两者 。 操作系统的体系结构并不重要,而其他操作系统仍处于同一types的体系结构中。

上面的答案让我感到非常动心,所以我决定将所有可能的组合与OS, Eclipse和JVM三重组结合起来。 无论如何,谁正在挖掘和阅读我的文章,检查以下作为热点(我是Windows 7用户)。

  1. 您了解程序文件程序文件(x86)是两个不同的文件夹… x86代表32位版本的程序,前者是64位版本。

  2. 如果您安装了多个版本不同的bitness和release版本,而这些版本肯定会发生在如此多的开源IDE ,pipe理器,pipe理控制台上,那么最好的select是直接在eclipse.ini文件中设置VM参数。 如果你不这样做,Eclipse会发疯,尝试search自己,这是不好的。

解决这个问题的简单方法之一是将jre文件夹从安装的JDK复制到Eclipse安装文件夹中。 确保您复制的JDK与Eclipse安装的体系结构相同。

我不得不这样configuration我的机器,因为我在我的机器上运行Eclipse和Appcelerator Titanium Studio 。 Studio需要32位Java,而Eclipse需要64位。

是的,只要确保您的Eclipse和JDK版本都是64位的。 只要确保一切正确,卸载JDK并将其安装在Program Files中,而不是在Program Files(x86)中 。 至less可以解决我的问题。

你应该卸载所有旧的[JRE] [1],然后安装最新的…我有同样的问题,现在我解决它。 我有:

更好地安装JRE 6 32位。 它真的有用。

从站点下载64位JVM并手动安装,并更新系统pathvariables。 这解决了这个问题。

  1. 我的系统默认的JVM安装在“C:\ Program Files”中
    (86)\的Java \ jre7"
  2. 手动安装的JVM被安装在“C:\ Program Files \ Java \ jre7”中,并且在更新这个命令到系统pathvariables之后它就工作了。

谢谢misterfrb ,我意识到Eclipse给了这个错误,因为我刚刚安装了Oracle 10g Developer套件 ,并且正在寻找C:\DevSuiteHome_1文件夹中的jvm.dll文件(我一定select了再次安装JDK与开发人员套件)。

从pathvariables中删除DevSuiteHome行并添加64位jvm.dll的校正位置(不知道这是否是必要的,没有尝试没有),Eclipse再次工作,开发人员套件仍然如此。

只要检查PATH环境variables。 在我的电脑 – > 属性 – > 高级系统设置 – > 环境variables – >(左上窗口“用户variables为”PC的某些名称“),只需检查PATHvariables。 如果不存在,请使用以下命令创build它 – > C:\ Program Files(x86)\ Java \ jre7 \ bin < –

更新我的Eclipse之后,我遇到了同样的问题。 我发现path问64位版本,但我有不同的path32位。 这对我有帮助。 PS:我有一个64位的操作系统,32位的JRE和32位的Eclipse。 所有的工作好:)

简单,我有一个64位操作系统,32位Eclipse和JDK 32&64安装…我刚刚卸载64位JDK和Eclipse工作正常..

从Java 6升级到Java 7后,我遇到了同样的问题。删除Java 6(64位)并重新安装Java 7(64位)后,Eclipse工作。 🙂

确保您以pipe理员权限启动Eclipse。

在eclipse.ini的第一行添加-vm参数和它的值是非常重要的

-vm C:\ Program Files \ Java \ jdk1.7.0_45 \ bin \ javaw.exe

您可以在64位机器上安装JDK的32位版本。 请参阅JDK 7下载

对于PDT用户 – 避免 Zend下载页面 – 它没有任何链接的64位下载。

使用Elipse网站本身 。

上面的链接有一个较旧的3.6 Eclipse,然后由于Eclipse Bug#317785而无法自行更新。

我的解决scheme是只安装64位的32位Java – 这允许Zend安装程序工作。

令人沮丧的是,为了获得一个PHP IDE,必须经过一段Java / Eclipse的时间。

如果你使用整个64位三重奏,但它仍然无法正常工作(我在启动Intellij Idea的Android监视器时遇到了这个问题),可能是错误的jvm.dll被用于反对你的java期望。 只需按照以下步骤操作

  1. 在您的JRE目录中findjvm.dll: C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. 在JDK目录中findjvm.dll: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. jvm.dll从JRE drectory复制到您的JDK目录中,并覆盖JDK中的jvm.dll。

不要忘记做一个备份,以防万一。 无需安装或卸载任何与Java相关的东西。

我也一样。 我有64位的Eclipse,但我的JDK是32位的。 所以我安装了64位版本,现在就可以了。

我不知道为什么,但我有我的Windows \ system32目录中安装到我的c:\ windows目录和java.exe和javaw.exe jre。

很显然,即使在我的eclipse.ini文件中添加了-vm标志之后,这些目录也是优先的。

从这里删除他们为我解决了这个问题。

你已经改变了环境variables中JAVA_HOME和PATH的正确版本。