Mac上解决dose not contain the JNI_CreateJavaVM symbol

2022年6月17日08:13:22

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

Mac上解决dose not contain the JNI_CreateJavaVM symbol

本文关键字:Mac、Eclipse、DBeaver、JVM、OpenJDK

一、问题描述

在Mac系统上运行Eclipse或某些基于Eclipse封装的软件(如:DBeaver)时,可能会遇到如下问题:
Mac上解决dose not contain the JNI_CreateJavaVM symbol
核心信息为:The JVM shared library “…” does not contain the JNI_CreateJavaVM symbol,其中省略的部分为libjvm.dylib文件的调用路径。

二、产生原因

可以看到这是一个典型的环境问题,Eclipse的运行需要预先安装Java环境,并且版本需要兼容。产生上述问题的原因可能有以下几个:

  • 对应文件已经损坏
  • 版本与要求不匹配
  • 系统架构不能兼容

如果系统本身并不存在任何的Java环境(软件本身也未附带JRE),则会提示另外的错误信息:No Java virtual machine was found。此时应该下载安装JDK,并配置环境变量。

三、解决方法

本方法适用于解决所有基于Eclipse封装的软件,某些需要Java环境运行的软件也可借鉴此办法。

1. 打开配置文件

修改配置文件的目的是为了自己指定JDK家目录以及java命令的完整位置,修改方法如下。

  • 右键软件包 - 显示包内容:

Mac上解决dose not contain the JNI_CreateJavaVM symbol

  • 用文本编辑工具打开Info.plist

Mac上解决dose not contain the JNI_CreateJavaVM symbol

2. 确定修改位置

定位到key标签内容为Eclipse的部分:
Mac上解决dose not contain the JNI_CreateJavaVM symbol
准备在array标签后进行添加。

3. 获取JDK路径

安装好JDK后,如果需要查询家目录位置可以使用如下命令:

/usr/libexec/java_home -V

会显示出当前系统已经安装的JDK版本和当前默认使用的版本。
Mac上解决dose not contain the JNI_CreateJavaVM symbol
注:如果将解压安装的JDK复制到/Library/Java/JavaVirtualMachines 路径下也会自动扫瞄,不同系统版本的JDK存放路径可能不同,以显示为准。

4. 修改配置文件

在指定位置添加如下内容,以jdk18为例:

<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home/bin/java</string>

效果如下:
Mac上解决dose not contain the JNI_CreateJavaVM symbol
保存退出即可,重新运行软件,问题已经解决。

5. 版本如何选择

大家在进行操作时,可以将可能性逐个排除,因为有些时候我们可能没办法精确查找到软件对于Java环境的要求。
在将运行环境指向已安装的JDK后,如果问题依然存在,可能是文件损坏(但是概率极低),可以通过重新安装来排除。
如果重新安装后问题依然存在,需要检查JDK与系统架构是否匹配。目前很多M1芯片的笔记本应该使用arm架构的版本,某些软件对运行环境的要求会比较严格。
如果是版本不匹配一般会有类似Unsupported vsersion之类的提示,可以根据版本号提示再次进行尝试。
小编是在折腾DBeaver时遇到了这个问题,这个软件本身其实已经内置了Java环境,但是很有可能是基于x86_64架构的,最后将环境指向了基于arm架构的OpenJDK,问题解决。
需要的小伙伴可以点击链接下载:https://jdk.java.net/18/

  • 作者:一头小山猪
  • 原文链接:https://sandtower.blog.csdn.net/article/details/125013810
    更新时间:2022年6月17日08:13:22 ,共 1731 字。