M1 Mac运行Scala应用遇Kanela Agent架构兼容问题求助
解决M1 Mac上arm64架构下Scala应用Kanela Agent启动失败问题
错误核心是Kanela Agent依赖的JNA生成的临时库仅包含x86_64/i386架构,不兼容M1的arm64,导致java.lang.UnsatisfiedLinkError。以下是可行的解决方法:
升级Kanela Agent到支持arm64的版本
老版本Kanela未适配Apple Silicon,需确保项目使用的Kanela版本支持arm64。在项目的build.sbt中更新依赖:libraryDependencies += "io.kamon" % "kanela-agent" % "1.0.12" // 替换为最新稳定版同时如果使用了sbt-kanela-plugin,也需同步升级插件版本:
addSbtPlugin("io.kamon" % "sbt-kanela-runner" % "2.0.9") // 需匹配Kanela核心版本强制JNA生成arm64架构临时库
在JVM参数中指定JNA架构,让其生成适配arm64的临时文件。可以在项目的build.sbt中添加:run / javaOptions += "-Djna.arch=arm64"或者直接在运行sbt时传递参数:
sbt -J-Djna.arch=arm64 run彻底清理JNA缓存
JNA的缓存目录可能残留了旧的x86_64架构文件,手动删除整个缓存文件夹:rm -rf ~/Library/Caches/JNA/执行后重新启动
sbt run。确认终端与sbt的架构为arm64
确保终端未通过Rosetta运行(右键终端图标,取消“使用Rosetta打开”选项),或者在终端中切换到arm64架构:arch -arm64 zsh再运行
sbt run,避免sbt以x86_64模式启动。临时禁用Kanela Agent排查问题
如果以上方法无效,可先暂时禁用Kanela Agent验证应用本身是否能正常运行:- 若使用sbt-kanela-plugin,在
build.sbt中注释掉插件引用; - 若手动添加了
-javaagent参数,移除该参数后重新运行。
- 若使用sbt-kanela-plugin,在
内容的提问来源于stack exchange,提问作者Mauricio Reis
相关产品推荐
相关产品推荐

