无法加载JNI共享库(JDK)

时间:2011-09-08 18:02:16

标签: java windows eclipse java-native-interface

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

  

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

此后,Eclipse强制关闭。

以下是我想提出的几点:

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

下载32位版本是我最不想做的事情 会有什么建议来解决这个问题?

39 个答案:

答案 0 :(得分:828)

你需要一个64位三人组:

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

答案 1 :(得分:302)

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'安装'失败了Failed to Load the JNI shared Library以及相对于新安装的JDK的给定路径,它认为是jvm.dll

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

eclipse.ini中添加VM参数(如常见所述)在我的情况下没有用(因为我只有错误的JDK / JRE与之关联。)

我也无法找到如何检查这个Eclipse是32位还是64位版本(我无法在Task Manager查找,因为这个Eclipse'安装'无法启动自从我设置它以来已经有一段时间了,我也记不起它的版本了。)

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

答案 2 :(得分:257)

确保您的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位保持相同并配置 eclipse.ini

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

答案 3 :(得分:58)

我有同样的问题

我通过从

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

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

答案 4 :(得分:38)

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

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

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

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

答案 5 :(得分:33)

另一种选择是:

创建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必须相同。)

答案 6 :(得分:30)

我安装了多个版本的Java,包括Sun JDK& JRockit,32位和64位等,并通过全新安装的64位Eclipse for Java EE(JUNO)遇到了这个问题。

NOT 的工作原理:

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)

这对我来说没有解决问题。

DID 的工作原理:

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

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

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

注意:

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

答案 7 :(得分:18)

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

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

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

我希望它有所帮助。

答案 8 :(得分:11)

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

  • 将Eclipse移至 Program Files (而不是 Program Files(x86))。
  • 从“path”环境变量中删除32位版本Java的路径。

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

答案 9 :(得分:10)

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

-vm
yourdrive\java\bin

将它们设为eclipse.ini文件的前两行。

答案 10 :(得分:8)

正如许多人已经提到的,这是EclipseJava的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%(如果您不想在系统和/或用户环境变量中设置它,可能会创建一个批处理文件)请记住,32位位于程序文件(x86)

如果不确定,只需启动Eclipse,如果出现错误,请将PATH更改为其他'bit'版本的Java,然后再试一次。然后将Eclipse目录移动到相应的 Program Files 目录。

答案 11 :(得分:7)

或者,获取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

这应该可以解决问题。

答案 12 :(得分:7)

您可以像许多其他人一样解决这个问题。你需要 Eclipse和JDK是32位或两者都是64位。操作系统的体系结构并不重要,而其他体系结构保持相同类型的结构。

答案 13 :(得分:6)

我上面的答案让我受到了太大的诱惑,我决定用OS,EclipseJVM三重奏干掉所有可能的组合。无论如何,无论是谁正在挖掘并阅读我的帖子,请将以下内容作为热点(我是Windows 7用户)。

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

  2. 如果您有多个版本的Java安装了不同的位数和发布版本,这对于如此多的开源IDEs,管理员,管理控制台一定会发生,最好的选择是直接在eclipse.ini文件中设置VM参数。如果你不这样做,那么Eclipse会疯狂并尝试搜索自己哪个不好。

答案 14 :(得分:6)

解决此问题的一种简单方法是将jre文件夹从已安装的JDK复制到Eclipse安装文件夹中。确保从中复制的JDK与Eclipse安装的架构相同。

我必须以这种方式配置我的机器,因为我在我的机器上运行了Eclipse和Appcelerator Titanium Studio。 Studio需要32位Java,而Eclipse需要64位。

答案 15 :(得分:5)

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

更新Eclipse后,我遇到了同样的问题。我发现路径问64位版本,但我在dif路径中有32位。这对我很有帮助。 P.S。:我有一个64位操作系统,32位JRE和32位Eclipse。一切正常:))

答案 16 :(得分:5)

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

最好安装Jre 6 32位。它确实有效。

答案 17 :(得分:5)

是的,只需确保您的Eclipse版本和JDK都是64位。只是为了确保所有内容都正确卸载JDK并将其安装在 Program Files 中而不是 Program Files(x86)中。至少这解决了我的问题。

答案 18 :(得分:4)

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

  1. 我系统中安装的默认JVM位于“C:\ Program Files
    ”中 (x86)\ Java \ jre7“
  2. 已安装手动安装的JVM “C:\ Program Files \ Java \ jre7”并将此头文更新到系统后 它变得有效的路径变量。

答案 19 :(得分:4)

谢谢你 misterfrb ,我意识到Eclipse发出了这个错误,因为我刚刚安装了Oracle 10g Developer suite,它正在寻找jvm.dll文件C:\DevSuiteHome_1 1}}文件夹(我必须选择再次与开发人员套件一起安装JDK)。

从路径变量中删除DevSuiteHome行并添加64位jvm.dll的更正位置(不确定是否有必要,没有尝试),Eclipse再次工作,Developer Suite仍然可以太

答案 20 :(得分:4)

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

答案 21 :(得分:4)

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

答案 22 :(得分:3)

确保以管理员权限启动Eclipse。

答案 23 :(得分:3)

我想为此错误提供另一种解决方案,特别是对于想要在一个系统中使用32位和64位Eclipse的人。

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

解决方案是使用mklink.exe命令创建目录连接,该命令存在于windows vista或更新版本中(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"

答案 24 :(得分:3)

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

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

答案 25 :(得分:2)

如果您使用整个64位三重奏并且它仍然无法工作(我在Intellij Idea中启动Android Monitor时遇到此问题),可能使用的错误是jvm.dll与您期望的内容相反。只需按照以下步骤操作:

  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. jvm.dll从JRE drectory复制到JDK目录中,并覆盖JDK中的jvm.dll。

  4. 别忘了备份,以防万一。无需安装或卸载与Java相关的任何内容。

答案 26 :(得分:2)

同样的事发生在我身上。我有64位Eclipse,但我的JDK是32位。所以我安装了64位版本,现在就可以了。

答案 27 :(得分:2)

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

使用Elipse site itself

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

我的解决方案是只安装32位Java和64位 - 这使得Zend安装程序能够正常工作。

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

答案 28 :(得分:2)

我不确定为什么,但是我的j4安装到了我的c:\ windows目录以及我的windows \ system32目录中的java.exe和javaw.exe。

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

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

答案 29 :(得分:2)

您已在环境变量中更改了JAVA_HOME和PATH的正确版本。

答案 30 :(得分:2)

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

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

答案 31 :(得分:2)

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

答案 32 :(得分:1)

就我而言,我尝试从命令提示符启动java并出现此错误

  

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

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

答案 33 :(得分:0)

我遇到了所有Eclipse错误,这是其中之一。问题是Eclipse 64位版本。下载32位版本并启动它。

答案 34 :(得分:0)

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

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

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

答案 35 :(得分:0)

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

wiki.eclipse.org/Eclipse.ini

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

答案 36 :(得分:0)

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

答案 37 :(得分:0)

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

答案 38 :(得分:0)

由于Windows路径交互的方式而发生。在您的64位版本之前,列出了您的32位JRE。由于javaw.exe在32位和64位版本中的名称均相同,因此它将尝试找到的第一个。更改路径环境变量中的顺序,使列表上的64位版本比32位更高,并且可以正常工作。