首页 文章

无法加载JNI共享库(JDK)

提问于
浏览
883

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

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

在此之后,Eclipse强制关闭 .

以下是我想提出的几点:

  • 我检查了该路径是否存在任何内容 . 它确实存在 .

  • 我的Eclipse和Java SE Development Kit都是64位的 . 我检查了我的系统,它可以处理64位 .

  • 我在Google和Stack Overflow上搜索过这个问题,我找到的唯一答案是下载32位版本的JDK和Eclipse .

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

30 回答

  • 7

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

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

  • 33

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

  • 2

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

  • 5

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

    • 我系统中安装的默认JVM位于“C:\ Program Files”中
      (86)\的Java \ jre7"

    • 在"C:\Program Files\Java\jre7"中安装了手动安装的JVM,并且在将此头文更新到系统路径变量之后,它工作正常 .

  • 4

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

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

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

    Important: 这两行必须在-vmargs之前 . 不要使用引号;允许空格 .

  • 5

    您可以像许多其他复制的那样解决该问题 . 你需要 Eclipse and the JDK be 32-bits or both on 64-bits . 操作系统的体系结构并不重要,而其他体系结构保持相同类型的结构 .

  • 10

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

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

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

  • 5

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

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

  • 7

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

    • 将Eclipse移动到程序文件(而不是程序文件(x86)) .

    • 从'path'环境变量中删除32位版本Java的路径 .

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

  • 5

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

    最好安装Jre 6 32位 . 真的行 .

  • 30

    或者,获取相同的"bit"版本的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
    

    这应该够了吧 .

  • 2

    我上面的答案让我受到了很多诱惑,我决定用OS,EclipseJVM三重奏来干掉所有可能的组合 . 无论如何,无论是谁正在挖掘和阅读我的帖子,请检查以下作为热点(我是Windows 7用户) .

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

    • 如果您安装了多个版本的Java,其中包含不同的位数和发行版本,这对于许多开源IDEs,管理员,管理控制台来说都是必然的,最好的选择是直接在 eclipse.ini 文件中设置VM参数 . 如果你不这样做,那么Eclipse会疯狂并尝试搜索自己哪个不好 .

  • 3

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

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

  • 2

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

    使用Elipse网站本身 .

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

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

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

  • 6

    我安装了多个版本的Java,包括Sun JDK和JRockit,32位和64位,等,并通过全新安装的64位Eclipse for Java EE(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)
    

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

    DID的工作原理:

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

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

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

    注意:

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

  • 4

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

    -vm
    yourdrive\java\bin
    

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

  • 2

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

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

  • 18

    您可以在64位计算机上安装32位版本的JDK . 见JDK 7 downloads .

  • 4

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

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

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

    我希望它对某人有帮助 .

  • 2

    你需要一个64位三人组:

    • 64位操作系统

    • 64位Java

    • 64位Eclipse

  • 3

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

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

  • 2

    如果你使用整个64位三重奏并且它仍然不起作用(我在Intellij Idea中启动Android监视器时遇到此问题),可能使用错误的jvm.dll与你期望的java相反 . 只需按以下步骤操作:

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

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

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

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

  • 37

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

  • 820

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

  • 57

    另一种选择是:

    创建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需要相同 . )

  • 10

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

    The failing Eclipse was the only one of all my IDEs that was still a 32-bit version on my otherwise all-64-bit setup.

    在_268951中添加VM参数(如常见的那样)在我的情况下是没有用的(因为我只有错误的JDK / JRE来关联 . )

    我也无法找到如何检查这个Eclipse是32位还是64位版本(我无法在Task Manager中查找它,因为这个Eclipse 'installation'无法启动 . 而且因为它已经有一段时间了因为我已经设置了它,我也记不起它的版本了 . )

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

  • 297

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

    从paths变量中删除DevSuiteHome行并添加64位 jvm.dll 的更正位置(不确定是否有必要,没有尝试没有),Eclipse再次工作,Developer Suite也是如此 .

  • 4

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

  • 255

    我有同样的问题

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

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

  • 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目录 .

相关问题