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

2022-09-01 05:50:40

我需要通过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>

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


答案 1

右键单击 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 路径声明移出注释部分。它现在应该看起来像这样。

<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 才能使其正常工作。


答案 2

对于那些在执行上述两个任务后可能陷入困境并且仍然看到相同错误消息的人:我确定我已经下载了64位Eclipse,但事实证明我有32位版本。下载64位后,一切正常!