• Mac上解决dose not contain the JNI_CreateJavaVM symbol


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

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

    Mac上解决dose not contain the JNI_CreateJavaVM symbol

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

    一、问题描述

    在Mac系统上运行Eclipse或某些基于Eclipse封装的软件(如:DBeaver)时,可能会遇到如下问题:
    在这里插入图片描述

    核心信息为: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命令的完整位置,修改方法如下。

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

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

    2. 确定修改位置

    定位到key标签内容为Eclipse的部分:

    准备在array标签后进行添加。

    3. 获取JDK路径

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

    /usr/libexec/java_home -V
    
    • 1

    会显示出当前系统已经安装的JDK版本和当前默认使用的版本。

    注:如果将解压安装的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>
    
    • 1
    • 2

    效果如下:

    保存退出即可,重新运行软件,问题已经解决。

    5. 版本如何选择

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

    扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~
    在这里插入图片描述

  • 相关阅读:
    node.js验证码
    Python之进程Process
    好友让我看这段代码
    TCP、UDP、IP头部结构
    父子工程搭建
    Flow Problem(最大流模板)
    webpack之hot热更新
    突发奇想把云服务器刷成了黑群晖 ...
    trick2-mobilenetv1、mobilenetv2、mobilenetv3替换YOLO主干
    【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
  • 原文地址:https://blog.csdn.net/u012039040/article/details/125013810