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架构:
bashjava -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
的绝对路径 - 直到看到这篇博客后,才受到启发可能是JDK架构不兼容:Mac上解决dose not contain the JNI_CreateJavaVM symbol 👍 👍 👍
- 之前一直都没有过是JDK架构不兼容,因为使用
x86_64
的JDK使用也快3个月,基于IntelliJ IDEA搭建的IDE、运行Java程序什么的根本没问题 - 笔者在修改
Info.list
无果后,一直觉得是自己的M2芯片太新了,Ecplise不支持 😭 😭