Eclipse:JVM 共享库不包含 JNI_CreateJavaVM 符号

Posted

技术标签:

【中文标题】Eclipse:JVM 共享库不包含 JNI_CreateJavaVM 符号【英文标题】:Eclipse: JVM shared library does not contain the JNI_CreateJavaVM symbol 【发布时间】:2014-11-03 10:13:54 【问题描述】:

Mac OSX 10.9 上的 Eclipse 4.4.0,当我尝试运行 JVM 8 时会发出警报:

“JVM 共享库“/Library/Java/JavaVirtualMachine/jdk1.8.0_20.jdk/Contents/Home/bin/.../jre/lib/server/libjvm.dylib”不包含 JNI_CreateJavaVM 符号”

应用程序没有启动。

我按照 Shan 8/25 的指示编辑了 Info.plist,但仍然遇到同样的错误。

我还从 Apple 的网站下载并安装了 Java,但仍然遇到同样的错误。

感谢您的帮助。

【问题讨论】:

确保您使用的是 64 位版本的 Mac Eclipse 成功了,谢谢格雷格 为我安装 Eclipse Mars 为我修复了它。我认为这与 32 位或 64 位无关,因为我的活动监视器(是的,我在 OSX 上)没有针对 Eclipse 说 x32。但是,为@greg-449 +1。 这里有详细的解释***.com/questions/24589932/… 【参考方案1】:

如果您使用 Eclipse 安装程序安装 eclipse,当安装程序未指向正确的 jvm 位置时,可能会发生这种情况。 您可以按如下方式进行更正。 1. 右键单击​​安装程序文件并选择“显示包内容” 2. 转到目录并打开 Info.plist 3. 在该文件的底部,您将看到带有标签<string>-vm</string> 的注释部分以及一些路径。您可以在那里设置正确的 JAVA_HOME 路径并取消注释该部分。 (在控制台中运行 echo $JAVA_HOME 将为您提供当前设置)

【讨论】:

【参考方案2】:

我在 Mac OS 上最新的 Eclipse 安装过程中发现了几个重要的细节

Info.plist 确实被锁定了。我使用命令行解锁了它 然后是“chmod 666 Info.plist”。 Info.plist 中 vm 字符串的版本特定于 JDK。我无法使用 JDK 13 进行这项工作。所以,我使用了我的 Java 8 版本:

/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java

显得很重要:JAVA_HOME 应该与 Info.plist 中的内容完全对应

要解锁 Info.plist,您需要从 dmg 文件中提取 Eclipse Installer.app。然后从包含 Eclipse Installer.app 的目录中执行以下命令:

cd "Eclipse Installer.app"/Contents
chmod 666 Info.plist 

【讨论】:

你能具体说明你是如何解锁的吗?我尝试执行此操作时收到“权限被拒绝”警报。 看答案中的解释 所以我做了必要的更改(-vm/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/bin/java ) 在评论之外,现在当我尝试打开安装程序应用程序时,它说它“已损坏且无法打开”。这可能是因为我将应用程序从 dmg 拖到桌面上吗?或者 .plist 被篡改的事实...... 不确定,我没有这个问题。我正在使用我下载的包 好的,这确实是安装程序应用程序中的一个实际错误。该错误现已修复【参考方案3】:

我在使用不同的 Java 版本(所有种类的 java 11)时遇到了不同的错误。

对我来说,它始于-

“jdk-11.0.1.jdk”无法打开,因为开发者不能 已验证。

我试图完成这项工作,一旦我克服了这个错误,我就点击了-

JVM 共享库不包含 JNI_CreateJavaVM 符号。

然后我尝试了另一个 java 11,结果遇到了-

创建java虚拟机失败

这是我拥有的不同版本-

/usr/libexec/java_home -V

匹配Java虚拟机(四):

11.0.5, x86_64:   "AdoptOpenJDK 11"   /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
11.0.4, x86_64:   "OpenJDK 11.0.4"    /Library/Java/JavaVirtualMachines/jdk-11.0.4+11/Contents/Home
11.0.1, x86_64:   "OpenJDK 11.0.1"    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
1.8.0_161, x86_64:    "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

我还有另一个 java 11 变体,你在上面的列表中没有看到,因为我删除了它。

什么最终对我有用 - OpenJDK 11.0.4。

11.0.4, x86_64:   "OpenJDK 11.0.4"    /Library/Java/JavaVirtualMachines/jdk-11.0.4+11/Contents/Home

我还在 Mac 上使用 Eclipse Installer 重新安装了 Eclipse(2019-12 版本)。这也是我之前安装它的方式,但它不适用于其他 java 11。 注意-

1.8 也可以,但我的项目需要 11。 对于 Failed to create the Java Virtual Machine 问题,此链接中提到的 libjli.dylib 周围有一个解决方案 - https://www.eclipse.org/forums/index.php?t=msg&th=1102885&goto=1823113&#msg_1823113。它对我不起作用。我尝试了此链接和各种 SO 页面中建议的许多其他解决方案,但这些解决方案都不适用于我的 Macbook。

【讨论】:

【参考方案4】:

我在我的 MacBook Air(M1,2020)上尝试在 macOS 11.2.3 上安装 Eclipse IDE for Eclipse Committers 版本 2021-03 (4.19.0) 时遇到了这个问题。我使用的是Azul arm64 JDK。通过安装OpenJDK x64 并更新以下文件解决了这个问题:

Eclipse.app/Contents/Info.plist

按照Rajeev Sampath's answer 中的说明指向 OpenJDK。我假设问题出在将 arm64 编译的 JDK 与 Eclipse 一起使用,目前仅适用于 x64。

【讨论】:

【参考方案5】:

在我的例子中,我已经安装了几个 jdk,如运行命令时所示:

/usr/libexec/java_home -V

安装程序抱怨 Java JDK 11 没有它需要的东西。由于我放弃了使用 11 来支持 8,因此我可以使用以下命令从系统中删除此 JDK:

cd /Library/Java/JavaVirtualMachines
sudo rm -fr jdk-11.0.1.jdk

这使我的 jdk1.8.0_221.jdk 成为最新的 jdk,并且安装程序运行良好。

您可能可以将 jdk-11.0.1.jdk 移动到另一个位置以使用不同的 jdk 版本安装 Eclipse,然后将其移回。

【讨论】:

【参考方案6】:

我遇到了这个问题,并最终通过在 info.plist 中直接将 eclipse 指向它来解决问题,从而切换到更新版本的 openjdk 13.0.2。它不适用于构建版本 12.0.2+8。版本 12.0.2+10 解决了这个问题。

/Library/Java/JavaVirtualMachines/jdk-12.0.2.openjdk/Contents/Home/bin
mychine1:bin$ ./java -version
openjdk version "12.0.2" 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

【讨论】:

【参考方案7】:

在我的情况下,我只安装了 java 11,为了解决这个问题,我安装了 java 8 并在 JAVA_HOME 中设置了 java 8 然后它开始工作了。

【讨论】:

【参考方案8】:

尝试用 openjdk11.dylib 替换 libjli.dylib。像魅力一样工作!

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案9】:

问题发生后,我通过 Homebrew 安装了 eclipse。更改 info.plist 导致文件损坏错误。只需使用脚本,就是这样: https://formulae.brew.sh/cask/eclipse-java

Discalimer:我还使用 brew 安装了 Temurin-17.0.1。

【讨论】:

【参考方案10】:

我在尝试安装基于 Eclipse 的 Apache Directory Studio 时遇到了这个问题。我正在使用 macOS 12.1。

这里没有其他答案对我有用。

我通过点击 Eclipse 下载页面中的链接安装 OpenJDK 运行时 Temurin 17 使其工作。

【讨论】:

以上是关于Eclipse:JVM 共享库不包含 JNI_CreateJavaVM 符号的主要内容,如果未能解决你的问题,请参考以下文章

使用 Serviceability Agent 检查 JVM 核心转储时如何获取共享库列表?

Eclipse:无法加载 JNI 共享库“C:\Windows\system32\..\jre\bin\client\jvm.dll”

Eclipse 错误:无法加载 JNI 共享库“C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll [重复]

通过 CMake 生成的 TFLite 共享库不起作用

Eclipse - 无法加载 JNI 共享库

Eclipse:无法加载 JNI 共享库 [重复]