Mac上解决dose not contain the JNI_CreateJavaVM symbol
Posted 一头小山猪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
会显示出当前系统已经安装的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>
效果如下:
保存退出即可,重新运行软件,问题已经解决。
5. 版本如何选择
大家在进行操作时,可以将可能性逐个排除,因为有些时候我们可能没办法精确查找到软件对于Java环境的要求。
在将运行环境指向已安装的JDK后,如果问题依然存在,可能是文件损坏(但是概率极低),可以通过重新安装来排除。
如果重新安装后问题依然存在,需要检查JDK与系统架构是否匹配。目前很多M1芯片的笔记本应该使用arm架构的版本,某些软件对运行环境的要求会比较严格。
如果是版本不匹配一般会有类似Unsupported vsersion之类的提示,可以根据版本号提示再次进行尝试。
小编是在折腾DBeaver时遇到了这个问题,这个软件本身其实已经内置了Java环境,但是很有可能是基于x86_64架构的,最后将环境指向了基于arm架构的OpenJDK,问题解决。
需要的小伙伴可以点击链接下载:https://jdk.java.net/18/
以上是关于Mac上解决dose not contain the JNI_CreateJavaVM symbol的主要内容,如果未能解决你的问题,请参考以下文章
(转)The windows boot configuration data file dose not contain a valid OS entry
Divice eth0 dose not seem to be present ,delaying initalization解决办法
npm dose not support Node.js v10.15.3
DB2If ‘db2‘ is not a typo you can run the following command to lookup the package that contains th(代