无法加载JNI共享库(JDK)

Mxy*_*xyk 915 java eclipse windows java-native-interface

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

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

在此之后,Eclipse强制关闭.

以下是我想提出的几点:

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

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

Pet*_*der 839

你需要一个64位的三人组合:

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


sja*_*jas 308

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'安装'之后失败了,32-bit相对于它认为的新安装JDK的给定路径32-bit.

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

添加VM参数,就像经常提到的那样,在32-bit我的情况下是没有用的(因为我只有错误的JDK/JRE来关联.)

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

如果您使用较新的JDK和较旧的JRE,您也可能遇到麻烦,但是更有可能64-bit出现,IIRC.

  • 检查32位或64位版本,打开eclipse.ini并查找使用的equinox启动程序(例如org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502) (8认同)
  • 它应该只使用Path变量中的第一个\ bin (3认同)

jay*_*iya 263

确保您的eclipse.ini文件包含以下行.

-vm
C:\path\to\64bit\java\bin\javaw.exe
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

使用OS和Eclipse 64位或两者都保持相同并配置eclipse.ini.

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

  • 这解决了这个问题.我将`-vm C:\ Program Files\Java\jdk1.6.0_32\bin\javaw.exe`行添加到我的eclipse.ini文件中,它启动就好了.感谢您的帮助+1. (9认同)
  • 这很有效.但需要将-vm放在ini文件的顶部; 至少在-vmargs或--launcher.xxx之前 (9认同)
  • 我使用Java 6 SDK完成了这项工作,但它没有用.我再次尝试了,指向我的Java 7 SDK,它工作正常.我使用的是Windows 8 64位,Java 6和7(均为64位)和Eclipse Helios(32位).我准备卸载并重新安装Eclipse 64位,但似乎java 7 SDK包含一些新的智能来更好地运行32位应用程序. (2认同)
  • 非常非常重要的一点,我错过了.如果你使用像:"-vm C:\ ProgramFiles\Java\jdk1.6.0_32\bin\javaw.exe"它将永远不会正常工作"-vm C:\ Program Files\Java\jdk1.6.0_32\bin\javaw.exe"-vm之后的新行非常重要. (2认同)

Far*_*arm 57

我有同样的问题

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

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


Pet*_*eng 42

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

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

-vm
C:\Program Files (x86)\Java\jdk1.7.0_55\bin\javaw.exe
Run Code Online (Sandbox Code Playgroud)

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


小智 32

另一种选择是:

创建Eclipse.exe的快捷方式.打开快捷方式并将目标更改为:

"C:\Program Files\eclipse\eclipse.exe" -vm "c:\Program Files\Java\jdk1.7.0_04\bin\javaw.exe"
Run Code Online (Sandbox Code Playgroud)

对于安装,请确保位置指向正确的Eclipse安装目录和正确的javaw.exe安装目录.

(当然,64和32位版本的Eclipse和Java必须相同.)

  • 无需更改.ini文件.只需对java和eclipse使用64位组合 (2认同)

小智 29

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

这并没有解决我的问题.

什么DID工作:

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

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

-vm
C:/apps/java/jdk7-64bit/bin/javaw.exe
Run Code Online (Sandbox Code Playgroud)

注意:

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


Sta*_*ino 18

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

-vm
C:\Progra~1\Java\jdk1.6.0_38\jre\bin\server\jvm.dll
Run Code Online (Sandbox Code Playgroud)

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

我希望它对某人有帮助.


mis*_*frb 11

我遇到了类似的问题.解决了以下问题.

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

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


小智 10

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

-vm
yourdrive\java\bin
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*sap 7

正如许多人已经提到的那样,这是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更改为其他'位'版本的Java,然后再试一次.然后将Eclipse目录移动到相应的Program Files目录.


小智 6

或者,获取相同的"位"版本的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
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.


小智 6

您可以像许多其他复制的那样解决该问题.您需要Eclipse和JDK在64位上为32位或两者.操作系统的体系结构并不重要,而其他体系结构保持相同类型的结构.


小智 6

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

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

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


Mik*_*rov 5

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

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