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

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

此后,Eclipse强制关闭。

我想提出几点:

  • 我检查了该路径是否存在任何东西。 它确实存在。
  • 我的Eclipse和Java SE开发套件都是64位的。 我检查了系统,它可以处理64位。
  • 我已经在Google和Stack Overflow上搜索了此问题,发现的唯一答案是下载32位版本的JDK和Eclipse。

作为最后的选择,我只想下载32位版本。
有什么建议可以解决这个问题?


#1楼

或者,获取相同的“位”版本的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楼

解决该问题的一种简便方法是将已安装JDK的jre文件夹复制到Eclipse安装文件夹中。 确保从中复制的JDK与Eclipse安装具有相同的体系结构。

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


#3楼

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

-vm
yourdrive\java\bin

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


#4楼

是的,只需确保您的Eclipse和JDK版本均为64位即可。 只是为了确保一切正确,已卸载的JDK并将其安装在Program Files中,而不是在Program Files(x86)中 。 至少那解决了我的问题。


#5楼

您可以解决许多其他复制的问题。 您需要Eclipse和JDK为32位,或者都为64位 。 操作系统的体系结构无关紧要,而其他操作系统则保持相同的类型。


#6楼

另一个选择是:

创建Eclipse.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位版本必须相同。)


#7楼

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

  1. 我的系统中安装的默认JVM位于“ C:\\ Program Files”中
    (x86)\\ Java \\ jre7“
  2. 手动安装的JVM已安装在“ C:\\ Program Files \\ Java \\ jre7”中,并将此页面更新为系统路径变量后,它可以工作。

#8楼

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

更新了Eclipse之后,我也面临着同样的问题。 我发现该路径要求使用64位版本,但我在dif路径中使用了32位。 对我有帮助。 PS:我有一个64位操作系统,32位JRE和32位Eclipse。 一切正常:)


#9楼

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

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


#10楼

我安装了多个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的建议,在eclipse.ini中添加-vm选项:

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

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

注意:

我不必卸载计算机上拥有的任何各种JDK或JRE版本。


#11楼

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

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


#12楼

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


#13楼

我上面的答案让我很受诱惑,于是我决定试运行所有可能的OS, Eclipse和JVM trio组合。 无论如何,无论是谁在挖掘并阅读我的文章,都应将以下内容作为热点(我是Windows 7用户)。

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

  2. 如果您安装了具有不同位数和发行版本的多个Java版本,而这必然发生在许多开源IDE ,管理器和管理控制台中,那么最好的选择是直接在eclipse.ini文件中设置VM参数。 如果您不这样做,Eclipse会发疯并尝试自行搜索,这不好。


#14楼

很简单,我有一个64位操作系统,一个32位Eclipse并同时安装了JDK 32和64 ...我刚刚卸载了64位JDK,Eclipse运行正常。


#15楼

如果您使用整个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相关的任何内容。


#16楼

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

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

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

希望对您有所帮助。


#17楼

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


#18楼

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


#19楼

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

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


#20楼

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

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

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


#21楼

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


#22楼

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

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

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

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


#23楼

我想为此错误提供另一种解决方案,特别是对于那些想要在一个系统中使用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”


#24楼

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

  • 64-bit 操作系统
  • 64-bit Java
  • 64-bit Eclipse

#25楼

我有同样的问题

我通过从安装64位JVM来解决它

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


#26楼

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

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

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


#27楼

OS,JDK和Eclipse的有效配对:


  • 32-bit 操作系统 | 32-bit JDK | 32-bit Eclipse仅32位
  • 64-bit 操作系统 | 32-bit JDK | 32-bit Eclipse
  • 64-bit 操作系统 | 64-bit JDK | 64bit Eclipse仅64位

我安装了几个JDK和JRE。

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

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

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

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

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

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

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

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


#28楼

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

从paths变量中删除了DevSuiteHome行,并为64位jvm.dll添加了更正位置之后(不确定是否有必要,请尝试一下),Eclipse再次工作了,并且Developer Suite仍然这样做。


#29楼

确保您的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位都保持不变,并使用config eclipse.ini配置。

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


#30楼

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

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

如果不确定,请启动Eclipse,如果出现错误,请将PATH更改为Java的另一个“位”版本,然后重试。 然后将Eclipse目录移动到适当的Program Files目录。

无法加载JNI共享库(JDK)相关推荐

  1. Linux C++ libdl.so dlfcn.h使用方法(dlopen()、dlsym()、dlclose()、dlerror())(用于动态链接库操作)(懒加载、立即加载)共享库符号、动态库

    文章目录 dlfcn.h解析 - dlopen():打开一个动态链接库文件并返回一个句柄,该句柄用于后续的操作,如查找符号.关闭库等. - dlsym():在打开的动态链接库中查找指定的符号,并返回符 ...

  2. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。...

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了.  这样一来,只要客户端下载Instant C ...

  3. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题...

    开发环境:VS2010+ORACLE,今天换了64位WIN7 ,为了方便使用PL/SQL,装了32位oracle客户端,但是本地IIS调试程序的时候总是提示:尝试加载 Oracle 客户端库时引发 B ...

  4. 尝试加载 Oracle 客户端库时引发 BadImageFormatException

    尝试加载 Oracle 客户端库时引发 BadImageFormatException.问题记录 1公司电脑是win7 64位旗舰版,刚来时配的新电脑,4G+i5这个配置不装64位那算是浪费了.谁知道 ...

  5. arduino如何加载OLED屏幕库

    arduino如何加载OLED屏幕库 使用arduino之OLED显示篇包含(SSD1306.SH1106.UC1611及各种常用OLED) arduino之所以火爆,很大一部分原因是由于它拓展一款外 ...

  6. 使用OD加载微软符号库

    Windbg可以加载微软符号库,如果本地没有符号,可以自动去微软网站上下载对应的PDB文件辅助调试分析. PS:WingDbg下的符号加载,SRV*c:/windows/symbols*http:// ...

  7. php taglib.php,thinkphp5 taglib_pre_load预加载自定义标签库

    文章内容来自官方手册,需要查看详细的可以访问来源网址. 模板中加载标签库,预加载自定义标签库,扩展内置标签库的加载 下面以标签库放在common作为一个示例: namespace app\common ...

  8. WinCE 调试某手写输入法时遇到的加载手写库失败的问题

    调试某手写输入法时遇到的加载手写库失败的问题 在 WinCE6.0 下使用此手写输入法 SDK 做了一个单独的手写输入程序A(MFC Dialog 框架).正常情况下,可以正常使用. 此 A 程序,采 ...

  9. Android查看当前应用已经加载的so库

    源代码: private static List<String> allSOLists = new ArrayList<String>();/** * 获取全部已加载的SO库* ...

最新文章

  1. OpenCV中的尺度不变特征变换(SIFT Scale-Invariant Feature Transform)
  2. 安装php-redis遇到Error: Package: php-pecl-igbinary-1.2.1-1.el7.x86_64 (epel)
  3. 手写文字识别java_java 手写文字图片识别提取 百度API
  4. ASP.NET 控制页和内容页中的事件
  5. 口琴膜片什么作用_新手怎么学口琴?
  6. 阿里云服务器搭配宝塔面板安装Redis为网站提速
  7. shiro框架 4种授权方式 说明
  8. 基于虚拟仿真技术的数字化工厂管理系统
  9. 2018蚂蚁金服Java开发实习生一面面经
  10. Martin Fowler微服务论文--译文
  11. Ray Tracing
  12. 重置或者修改mysql的root密码
  13. domian index域索引和全文索引
  14. Ruby+Selenium demo
  15. pku1905 Expanding Rods
  16. mysql left用法
  17. 专访架构师周爱民:谈企业软件架构设计 1
  18. 分布式电商项目 谷粒商城 学习笔记<2>
  19. 映泰Hi-Fi B150S5 主板来电后电脑自动开机问题
  20. 【干货分享】教你简单几步设计一款生日字体

热门文章

  1. 华丽丽的GridLayout-使用案例
  2. SpringMVC怎么获取前台传来的数组
  3. Android中的PopupWindow详解
  4. 创建型模式--原型模式
  5. Vue中使用form表单提交刷新问题
  6. Linux 永久挂载(mount)
  7. Android反编译apk并重新打包签名(Mac环境)
  8. 什么是SCADA Viewer
  9. sql随机查询数据语句(NewID(),Rnd,Rand(),random())
  10. 无重复数字的随机数字数组