Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol

1. 絮絮叨叨

  • 工作中需要借助Ecplise Memory Analyzer (MAT)分析dump文件,直接下载、安装、运行MAT报错
    Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol_第1张图片
  • 询问同事后,同事说可以先安装Ecplise,再以插件的形式安装MAT
  • 下载、安装好Eclipse,点击运行仍然报错,且错误信息一致
  • 笔者使用JDK 17.0.6,ls -l报错的目录,libjvm.dylib是存在的
  • 同时,笔者使用的是Mac M2 aarch64架构(Mac M2芯片),跟同事一起确认了下载的安装包没有问题
    Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol_第2张图片

2. 正确的解决办法

  • 对应的lib存在、Ecplise产品安装包又是mac aarch64的,这时需要考虑JDK是否正确
  • 使用如下命令查看JDK架构:
     java -XshowSettings:properties -version
    
  • 发现JDK竟然是x86_64的,也就是说是Intel的芯片
    Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol_第3张图片
  • 参考笔者之前的博客:《Open JDK下载》,下载了Eclipse Adoptium提供的aarch64的JDK 17.0.6安装包
  • 重新安装后,再次执行上述命令可以看到,JDK架构已经成功更新为aarch64
    Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol_第4张图片
  • 这时,再重新安装MAT,点击运行,一切OK

3. 后记

  • 最开始,一直以为是MAT无识别相对路径,按照某些解决方案修改其Info.list,直接指定libjvm.dylib的绝对路径
    • Mac OS, JDK1.7 (and 1.8) does not contain the JNI_CreateJavaVM symbol
    • Eclipse: JVM shared library does not contain the JNI_CreateJavaVM symbol
  • 直到看到这篇博客后,才受到启发可能是JDK架构不兼容:Mac上解决dose not contain the JNI_CreateJavaVM symbol
  • 之前一直都没有过是JDK架构不兼容,因为使用x86_64的JDK使用也快3个月,基于IntelliJ IDEA搭建的IDE、运行Java程序什么的根本没问题
  • 笔者在修改Info.list无果后,一直觉得是自己的M2芯片太新了,Ecplise不支持

你可能感兴趣的:(java相关,mac,macos)