当我尝试打开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,并手动安装它并更新了系统路径变量。 那解决了问题。
- 我的系统中安装的默认JVM位于“ C:\\ Program Files”中
(x86)\\ Java \\ jre7“ - 手动安装的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用户)。
您了解程序文件和程序文件(x86)是两个不同的文件夹... x86代表程序的32位版本,而前者是64位版本。
如果您安装了具有不同位数和发行版本的多个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期望。 只需按照以下步骤操作:
在您的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\\
从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目录。