1. 絮絮叨叨
- 工作中需要借助Ecplise Memory Analyzer (MAT)分析dump文件,直接下载、安装、运行MAT报错
- 询问同事后,同事说可以先安装Ecplise,再以插件的形式安装MAT
- 下载、安装好Eclipse,点击运行仍然报错,且错误信息一致
- 笔者使用JDK 17.0.6,
ls -l
报错的目录,libjvm.dylib
是存在的 - 同时,笔者使用的是Mac M2 aarch64架构(Mac M2芯片),跟同事一起确认了下载的安装包没有问题
2. 正确的解决办法
- 对应的lib存在、Ecplise产品安装包又是mac aarch64的,这时需要考虑JDK是否正确
- 使用如下命令查看JDK架构:
java -XshowSettings:properties -version
- 发现JDK竟然是
x86_64
的,也就是说是Intel的芯片
- 参考笔者之前的博客:《Open JDK下载》,下载了Eclipse Adoptium提供的aarch64的JDK 17.0.6安装包
- 重新安装后,再次执行上述命令可以看到,JDK架构已经成功更新为
aarch64
- 这时,再重新安装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不支持 😭 😭