Apple M1芯片架构运行RSK节点报错解决方案咨询
问题根因
该报错核心原因是RSKj 3.1.0-IRIS版本内置的leveldbjni原生动态库仅编译了x86_64、i386架构二进制,未提供Apple M系列芯片所需的arm64e架构适配版本,JVM无法加载对应本地库导致启动失败。
可行变通方案
- 方案一:通过Rosetta 2转译运行(改造成本最低,无需修改RSKj文件)
- 先安装Rosetta 2转译层,终端执行命令:
/usr/sbin/softwareupdate --install-rosetta --agree-to-license- 安装x86_64架构的JDK(请勿使用arm64原生JDK)。既可以将终端设置为通过Rosetta打开后执行原有启动命令,也可以不修改终端默认架构,直接在启动命令中替换为x86架构JDK的Java可执行文件全路径即可。该模式下本地regtest开发场景的性能损耗极低,完全满足日常开发测试需求。
- 方案二:升级RSKj至支持Apple Silicon原生运行的版本
更高版本的RSKj已更新leveldbjni依赖,原生适配arm64架构,替换对应版本的rskj核心jar包后,直接使用arm64原生JDK即可正常启动,无需转译层,运行性能更好。 - 方案三:手动替换适配arm64架构的leveldbjni依赖
如果必须固定使用3.1.0版本,可以自行编译或下载支持arm64架构的leveldbjni包,替换原有rskj jar包中内置的x86架构leveldbjni原生库,重新处理jar包清单后即可原生运行。该方案需要匹配依赖版本、处理jar包校验问题,适合有Java项目打包经验的用户。
内容的提问来源于stack exchange,提问作者bguiz
相关产品推荐
相关产品推荐

