Mac OS、JDK1.7(和 1.8)不包含 JNI_CreateJavaVM 符号

Posted

技术标签:

【中文标题】Mac OS、JDK1.7(和 1.8)不包含 JNI_CreateJavaVM 符号【英文标题】:Mac OS, JDK1.7 (and 1.8) does not contain the JNI_CreateJavaVM symbol 【发布时间】:2014-08-26 17:11:01 【问题描述】:

我需要通过 JDK 1.7 在 Mac OS 上运行 Eclipse Kepler(这是 PyDev 插件所必需的)。

问题是,虽然我已经成功安装了 1.7 jdk 并配置了 eclipse.ini 以使用它,但我得到了错误

JVM 共享库“/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin../jre/lib/server/libjvm.dylib”不包含 JNI_CreateJavaVM 符号。

更新 这里的聪明人https://github.com/joeferner/node-java/issues/90声称将JNI添加到info.plist文件中的JVMCapabilities就足够了

<key>JVMCapabilities</key>
   <string>JNI</string>

但我试过了,它在我的情况下不起作用

【问题讨论】:

Info.plist 文件应位于/Library/Java/JavaVirtualMachines/&lt;javaversion&gt;.jdk/Contents @Sindico -- Shan 的回答对我有用,你呢?您为什么不通过单击旁边的打开复选标记图标来接受他的回答。 【参考方案1】:

我有一个完美运行的 Eclipse Luna,并在尝试升级到 Java 8(并更新 jre、jdk 等)时开始出现此错误。 Shan的解决方案对我不起作用。 所以我刚刚下载并安装了最新的 Eclipse。它工作正常。节省调试和摆弄的时间。

【讨论】:

【参考方案2】:

右键单击 Eclipse 图标并选择“显示包内容”。在内容目录中,您会找到一个名为“Info.plist”的文件。向下滚动到文件底部,直到找到这个

<key>Eclipse</key>
    <array>
        <!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options,
                or add a VM found via $/usr/libexec/java_home -V
          <string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java</string>
          <string>-vm</string><string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java</string>
        -->

注意注释掉的部分。将 jdk 路径声明移出 cmets 部分。现在应该是这个样子。

<key>Eclipse</key>
    <array>
      <string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java</string>
        <!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options,
                or add a VM found via $/usr/libexec/java_home -V
          <string>-vm</string><string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java</string>
        -->

最后一步,浏览到 /Library/Java/JavaVirtualMachines 并检查那里存在的 jdk 包名称。用那个替换上面命令中的jdk版本。

/Library/Java/JavaVirtualMachines/your_jdk_package_name/Contents/Home/bin/java

可选:在某些机器上,您可能需要在完成所有这些操作后关闭查找器,导航到 eclipse 文件夹并再次单击 eclipse 以使其工作。

【讨论】:

这为我解决了这个问题 我在我的 mac OS X 上运行 Eclipse Luna 时遇到问题,这解决了我的问题!非常感谢 :) .. 只是为了确保您在机器上指定正确的 Java 路径,请使用以下命令:/usr/libexec/java_home 当我看到这个错误时,我以为它会占用我很多时间,这个简单的步骤在几分钟内就解决了,非常感谢 @Shan,它对我有用。我只是想知道为什么 eclipse 无法检测到正确的 jdk 路径。也许是因为我首先尝试安装 eclipse,然后我安装了 JRE 1.8 和 JDK 1.8。我是 Java 世界的新手——这就是顺序颠倒的原因。我以为当你安装 eclipse 时,一切都会安装。我来自 Microsoft Visual Studio 经验。 当我更改时,它给了我一个'“Eclipse”已损坏并且无法打开'的错误。是否有可能较新版本的 eclipse 安装是 codeSigned 并且更改 Info.plist 验证失败。有没有办法避免这种失败?【参考方案3】:

仅针对那些在完成上述两项任务后可能卡住但仍然看到相同错误消息的人:我确定我下载了 64 位 Eclipse,但事实证明我下载的是 32 位版本。下载 64 位后,一切正常!

【讨论】:

这是我更新到 OS X 10.10 后的问题

以上是关于Mac OS、JDK1.7(和 1.8)不包含 JNI_CreateJavaVM 符号的主要内容,如果未能解决你的问题,请参考以下文章

如何更改从/ usr / libexec / java_home返回的Mac OS默认Java VM

Mac os JAVA 开发环境配置简述

ConcurrentHashMap源码分析(JDK1.7和1.8对比)

JDK1.7&1.8源码对比分析集合ConcurrentHashMap

JDK1.7&1.8源码对比分析集合HashMap

Mac 开发环境