【问题标题】:Eclipse: JVM shared library does not contain the JNI_CreateJavaVM symbolEclipse:JVM 共享库不包含 JNI_CreateJavaVM 符号
【发布时间】: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。

标签: java eclipse macos jvm


【解决方案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。 注意-

    【讨论】:

      【解决方案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 使其工作。

                【讨论】:

                  猜你喜欢
                  • 2020-04-13
                  • 2014-11-12
                  • 2021-08-05
                  • 1970-01-01
                  • 2014-08-26
                  • 2017-03-09
                  • 2016-02-22
                  • 2018-06-14
                  • 1970-01-01
                  相关资源
                  最近更新 更多