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

Ray*_*ang 7 java eclipse macos jvm

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,但我仍然遇到同样的错误.

谢谢您的帮助.

n1k*_*1ch 19

如果有人在 2022 年遇到这个问题,以下下载对我有帮助:

https://adoptium.net/temurin/releases/?version=16

并且-vm应该***.app/Contents/Info.plist

<string>-vm</string><string>/Library/Java/JavaVirtualMachines/temurin-16.jdk/Contents/Home/bin/java</string>
Run Code Online (Sandbox Code Playgroud)

我使用的是 MacOS Monterey 12.5.1、Apple M1 Pro,我的问题是Apache Directory Studio - 当尝试运行它时,我得到:

the jvm shared library does not contain JNI_CreateJavaVM symbol
Run Code Online (Sandbox Code Playgroud)

  • 已经到了 2023 年,我还必须安装这个旧的 temurin 版本 16 才能让 Apache Directory Studio 正常工作(不适用于最新版本 19,也不适用于最新的 LTS 发行版本 17)。然后,Directory Studio 自 2021 年 7 月以来就没有更新,因此可能与较新的 java 版本不兼容。 (3认同)

Raj*_*ath 10

如果您使用 Eclipse 安装程序安装 eclipse,则当安装程序未指向正确的 jvm 位置时,可能会发生这种情况。
您可以按如下方式进行更正。

1. 右键单击​​安装程序文件并选择“显示包内容”
2. 转到目录并打开 Info.plist
3. 在此文件的底部,您将看到<string>-vm</string>带有一些路径标记的注释部分。您可以在那里设置正确的 JAVA_HOME 路径并取消注释该部分。(echo $JAVA_HOME在控制台中运行将为您提供当前设置)


aar*_*art 9

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

按照Rajeev Sampath 的回答中的说明指向 OpenJDK 。我假设问题是由于在 Eclipse 中使用了 arm64 编译的 JDK,目前仅适用于 x64。


小智 8

对于像我一样需要确切知道在哪里添加此信息的人来说,这里就是。首先,了解在哪里java- 就我而言,它是这样的(我使用asdf但没关系):

~$ asdf where java
/Users/your.username/.asdf/installs/java/liberica-17.0.2+9
Run Code Online (Sandbox Code Playgroud)

因此,MAT需要知道的字符串是“/Users/your.username/.asdf/installs/java/liberica-17.0.2+9/bin/java”。这是我添加到 MAT 的 .plist 文件中的字符串:

    ...
    <key>Eclipse</key>
        
    <array>
                
      <string>-keyring</string>
      <string>~/.eclipse_keyring</string>

      <string>-vm</string>
      <string>/Users/your.username/.asdf/installs/java/liberica-17.0.2+9/bin/java</string>              
    </array>
    
    <key>CFBundleDisplayName</key>
    <string>MemoryAnalyzer</string>

  </dict>

</plist>
Run Code Online (Sandbox Code Playgroud)

作为对比,这些是文件的原始内容:

    ...
    <key>Eclipse</key>
            
    <array>
                
      <string>-keyring</string>
      <string>~/.eclipse_keyring</string>
            
    </array>
    
    <key>CFBundleDisplayName</key>
    <string>MemoryAnalyzer</string>
  </dict>
  
</plist>
Run Code Online (Sandbox Code Playgroud)

仅供参考,我使用的是 M1 架构的 Mac。