当我尝试打开Eclipse时,弹出对话框显示:
加载JNI共享库“C:/JDK/bin/client/jvm.dll”失败。
在此之后,Eclipse部队关闭。
以下是我想说的几点:
我查了下那条路径上有没有东西。它确实存在。
我的Eclipse和Java SE Development Kit都是64位的。我检查了我的系统,它可以处理64位。
我在谷歌和Stack Overflow上搜索过这个问题,我找到的唯一答案是下载32位版本的JDK和Eclipse。
下载32位版本是我想做的最后一件事。
如何解决这个问题?
OS、JDK和Eclipse的工作配对:
32位OS | 32位JDK | 32位Eclipse(仅32位)
64位操作系统| 32位JDK | 32位Eclipse
64位OS | 64位JDK | 64位Eclipse(仅64位)
我安装了几个jdk和jre。
它们每个在PATH变量中都有自己的条目,都或多或少地在工作。
从PATH变量判断,有些安装完全无用,因为它们从未被使用过。当然,如果需要,可以在Eclipse中手动引用“不活跃”的java,但我从来没有这样做过,所以我真的不需要它们。(至少我当时是这么认为的……)
我清理了这些混乱,卸载了所有当前的Java,只安装了JDK + JRE 1.7 64位。
其中一个Eclipse“安装”失败后,加载JNI共享库失败和一个给定的路径相对于新安装的JDK,它认为jvm.dll所在的位置。
在我的全部64位设置中,失败的Eclipse是唯一一个仍然是32位版本的ide。
像经常提到的那样,在eclipse.ini中添加VM参数对我的情况没有用处(因为我只使用了错误的JDK/JRE)。
我也无法找到如何检查这个Eclipse是32位版本还是64位版本(我无法在任务管理器中查找它,因为这个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
使用64位或32位的操作系统和Eclipse保持一致,并配置Eclipse .ini。
您的eclipse.ini文件可以在eclipse文件夹中找到。
我安装了多个版本的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)
这并没有解决我的问题。
有效的方法:
根据Jayesh Kavathiya的建议,在eclipse.ini中添加-vm选项:
我在eclipse.ini中添加了以下内容:
-vm
C:/apps/java/jdk7-64bit/bin/javaw.exe
注意:
我不需要卸载机器上的各种版本的JDK或JRE。
上面的答案让我很感兴趣,所以我决定演练一下OS、Eclipse和JVM三人组的所有可能组合。无论如何,无论谁正在深入研究和阅读我的帖子,检查以下作为一个热点(我是Windows 7用户)。
You understand Program Files and Program File (x86) are two different folders... x86 stands for the 32-bit version of programs and the former is the 64-bit version.
If you have multiple versions of Java installed with different bitness and release versions, which is bound to happen with so many open source IDEs, managers, administrative consoles, the best option is to set the VM argument directly in the eclipse.ini file. If you don't, Eclipse will go crazy and try searching itself which is not good.
我想为这个错误提供另一种解决方案,特别是针对那些希望在一个系统中同时使用32位和64位Eclipse的人。
如果JRE子目录存在,Eclipse将使用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命令删除它。
删除文件夹“d: \ devTool \ eclipse \ jre”