加载JNI共享库(JDK)失败

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

加载JNI共享库“C:/JDK/bin/Client/jvm.dll”失败。

在此之后,Eclipse force关闭。

以下是我想提出的几点:

  • 我查了查那条路上有没有东西。它确实存在。
  • 我的Eclipse和JavaSE开发套件都是64位的。我检查了我的系统,它可以处理64位。
  • 我在Google和Stack Overflow上搜索过这个问题,我找到的唯一答案是下载32位版本的JDK和Eclipse。

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

1568514 次浏览

你需要一个64-bit三重奏:

  • 64-bitos
  • 64-bitJava
  • 64-bitEclipse

我也有同样的问题

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

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

我也遇到过类似的问题,通过以下操作解决了。

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

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

操作系统、JDK和Eclipse的工作配对:


  • 32-bitos|32-bitJDK|32-bitEclipse仅32位
  • 64-bitos|32-bitJDK|32-bitEclipse
  • 64-bitos|64-bit JDK|64bitEclipse仅64位

我安装了几个JDK和JRE。

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

从PATH变量来看,有些安装是完全无用的,因为它们从未被使用过。当然,如果需要,可以从Eclipse中手动引用“不活跃”的Javas,但我从来没有这样做过,所以我真的不需要它们。(至少我当时是这样认为的…)

我清理了混乱,卸载了所有当前的Java,只安装了JDK+JRE 1.7 64位。

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

失败的Eclipse是我所有IDE中唯一一个在我的全64位设置中仍然是32位版本的IDE。

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

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

如果您使用较新的JDK和较旧的JRE,您可能也会遇到麻烦,但更有可能出现java.lang.UnsupportedClassVersionErrorIIRC

谢谢你isterfrb,我意识到Eclipse给出了这个错误,因为我刚刚安装了Oracle 10g开发人员套件,它正在寻找C:\DevSuiteHome_1文件夹中的jvm.dll文件(我一定选择了再次安装JDK和开发人员套件)。

在从路径变量中删除DevSuiteHome行并为64位jvm.dll添加校正位置后(不确定这是否必要,没有尝试),Eclipse再次工作,Developer套件仍然如此。

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

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

我的eclipse.ini例如:

-startupplugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.2.R36x_v20101222-productorg.eclipse.epp.package.java.product--launcher.defaultActionopenFile--launcher.XXMaxPermSize256M-showsplashorg.eclipse.platform-vmC:\Program Files\Java\jdk1.6.0_32\bin\javaw.exe--launcher.XXMaxPermSize256m--launcher.defaultActionopenFile-vmargs-Dosgi.requiredJavaVersion=1.5-Xms40m-Xmx512m

使用OS和Eclipse 64位或32位保持相同并配置eclipse.ini

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

正如许多人已经提到的那样,对于EclipseJava来说,这是一个32位与64位的问题。您不能混淆32位和64位。由于Eclipse不使用JAVA_HOME,您可能必须在启动Eclipse之前更改PATH,以确保您不仅使用适当版本的Java,还使用32位或64位(或修改INI文件,如Jayath所述)。

如果您从公司共享安装Eclipse,您应该确保您可以知道您正在解压缩的Eclipse版本,并解压缩到适当的程序文件目录以帮助跟踪哪个是哪个,然后更改PATH(通过(Windows)控制面板->系统永久更改或设置PATH=/path/to/32 or 64bit/java/bin;%PATH%(如果您不想在系统和/或用户环境变量中设置它,可能会创建一个批处理文件)。记住,32位在程序文件(x86)中。

如果不确定,只需启动Eclipse,如果出现错误,请将PATH更改为Java的其他“位”版本,然后重试。然后将Eclipse目录移动到适当的程序文件目录。

或者,获取JRE和Eclipse的相同“位”版本,然后使用以下目标创建一个新的快捷方式(替换已安装的JRE和Eclipse位置/路径):

"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

这应该会起作用。

解决它的简单方法之一是将jre文件夹从安装的JDK复制到Eclipse安装文件夹中。确保您复制的JDK与您的Eclipse安装相同。

我必须这样配置我的机器,因为我在我的机器上同时运行Eclipse和Appcelerator钛工作室。Studio需要32位Java,而Eclipse需要64位。

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

-vmyourdrive\java\bin

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

是的,只要确保您的Eclipse和JDK版本都是64位的。只是为了确保一切正确卸载JDK并将其安装在程序文件而不是程序文件(x86)中。至少这解决了我的问题。

你可以像其他许多复制的问题一样解决这个问题。你需要那个Eclipse和JDK是32位的,或者在64位上两者兼而有之。操作系统的架构并不重要,而其他操作系统仍然保持相同类型的架构。

另一种选择是:

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

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

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

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

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

从站点下载64位JVM并手动安装并更新系统路径变量。这解决了问题。

  1. 默认JVM安装在我的系统中是在“C:\Program Files
    (x86)\Java\jre7"
  2. 手动安装的JVM安装在“C:\Program Files\Java\jre7”并将此pate更新到系统后路径变量它工作。

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

更新Eclipse后,我也遇到了同样的问题。我发现路径要求64位版本,但我有32位的dif路径。这对我很有帮助。附言:我有64位操作系统、32位JRE和32位Eclipse。一切正常:)

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

最好安装Jre 6 32位。它真的有效。

我安装了多个版本的Java,包括Sun JDK和JRockit,32位和64位等,并且在重新安装64位Eclipse forJavaEE(JUNO)时遇到了这个问题。

什么不是工作:

Peter Rader建议的64位三重奏:

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

我确保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)

这并没有为我解决问题。

确实工作:

按照Jayesh Kavathiya的建议将-vm选项添加到eclipse.ini:

我在eclipse.ini添加了以下内容:

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

备注:

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

在Eclipse的下载页面上,应该写“JRE 32位”或“JRE 64位”,而不是“Windows 32位”或“Windows 64位”。

如前所述,请务必使用与JDE兼容的正确版本。

确保您正在使用管理员权限启动Eclipse。

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

使用Elipse站点本身

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

我的解决方案是只安装32位Java和64位-这允许Zend安装程序工作。

令人沮丧的是,要获得PHP IDE,必须经历大量的Java/Eclipse流程。

上面的答案让我很受诱惑,我决定空运行所有可能的操作系统组合,EclipseJVM三重奏。不管怎样,无论谁在挖掘和阅读我的帖子,请将以下内容作为热点检查(我是Windows 7用户)。

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

  2. 如果你有多个版本的Java安装了不同的位和发布版本,这必然会发生在这么多开源

    简单,我有一个64位操作系统,32位Eclipse和JDK 32和64都安装了……我刚刚卸载了64位JDK,Eclipse运行良好。

我经历过所有的Eclipse错误,这是其中之一。问题是Eclipse 64位版本。下载32位版本并启动它。

如果你使用了整个64位三重奏,但它仍然不起作用(我在Intellij Idea中启动Android Monitor时遇到了这个问题),可能是错误的jvm.dll正在使用,而不是你的java所期望的。只需按照以下步骤操作:

  1. 在JRE目录中找到jvm.dll:C:\Program Files\Java\jre7\server\bin\jvm.dll

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

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

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

对于缺少的jvm.dll文件,我们可以在eclipse.ini文件中提供dll文件的路径

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

在这里,删除路径和双引号中的任何空格非常重要。当我删除引号和空格时,它对我有用。

我希望它能帮助某人。

从Java6升级到Java7后,我遇到了同样的问题。删除Java6(64位)并重新安装Java7(64位)后,Eclipse正常工作。:)

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

在eclipse.ini开始时的2行添加-vm参数及其值至关重要

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

我有同样的问题。64位操作系统都应该是64位。Java和Eclipse我尝试了stackoverflow和youtube中的所有方法。直到我找到这个简单的方法,他们都不为我工作。

我安装了64位java表单Cnet下载,问题自动修复。我提到的来源,因为它是太容易谷歌和去第一个Cnet lint而不是官方网站,如果你是一个新人。

p. s.如果您有Android ADT捆绑包并尝试从中打开eclipse并遇到相同的错误,您也可以使用此方法解决该问题。

我不知道为什么,但我把jre安装到我的c:\windows目录中,并在我的windows\system 32目录中java.exe和javaw.exe。

显然,即使在将-vm标志添加到我的eclipse.ini文件之后,这些目录也会获得优先级。

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

在我的情况下,我尝试从命令提示符启动java并收到此错误

错误:无法打开“C:\Windows\jre\lib\amd64\jvm.cfg”

这意味着从错误的目录开始在PATH中查找“java”。删除文件夹C:\Windows\jre\解决了问题

最简单的解决方案是在eclipse.ini中包含一个特定的JRE:

有了这个,您几乎可以启动任何Eclipse版本

您必须更改环境变量中JAVA_HOME和PATH的正确版本。

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

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

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

重要提示:这两行必须是之前-vmargs。不要使用引号;允许空格。

这个错误我们得到,因为不同的Java版本下载32位版本。

安装JDK 1.8._91(混合模式)是另一个解决方案!

我想避免这个错误的另一个解决方案,特别是对于那些想在一个系统中使用32位和64位Eclipse的人。

如果存在,Eclipse将使用jre子目录中的JRE/JDK启动。(STS或其他基于eclipse的IDE也支持此功能…)

解决方案是使用Windows vista或更新版本中存在的mklink.exe命令创建目录连接(junction.exe为Windows 2000/XP提供类似功能)
打开命令行窗口并执行以下命令:

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

当然,如果Eclipse适用于64位Windows,那么JDK/JRE的架构必须相同。

假设:

  • Eclipse for windows x86_64安装在d:\devTool\eclipse请求参数
  • JDK for windows x64安装在C:\Program Files\Java\jdk1.8.0

创建jre文件夹的命令将是:

mklink /j"d:\devTool\eclipse\jre""C:\Program Files\Java\jdk1.8.0"

顺便说一句,删除目录连接将不是删除任何文件。如果您创建了错误的链接,您可以使用文件资源管理器或rmdir命令将其删除。

rmdir"d:\devTool\eclipse\jre"

这是因为windows路径交互的方式。您的32位JRE列在您的64位版本之前。由于javaw.exe32位和64位版本的命名相同,因此它会尝试找到的第一个。更改Path环境变量中的顺序,因此64位版本在列表中高于32位版本,它将正常工作。