You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行SBT Scala项目时遇UnsatisfiedLinkError架构不兼容问题

JNA架构不兼容导致UnsatisfiedLinkError(M1 Mac环境)

错误日志

java.lang.UnsatisfiedLinkError: dlopen(/Users/user/Library/Caches/JNA/temp/jna11185077732330192528.tmp, 0x0009): 
tried: '/Users/user/Library/Caches/JNA/temp/jna11185077732330192528.tmp' (mach-o file, but is an incompatible architecture 
(have 'x86_64', need 'arm64')), 
'/System/Volumes/Preboot/Cryptexes/OS/Users/user/Library/Caches/JNA/temp/jna11185077732330192528.tmp' (no such file), 
'/Users/user/Library/Caches/JNA/temp/jna11185077732330192528.tmp'
 (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))

环境信息

  • SBT版本:1.7.2
  • Scala版本:2.13.8
  • Java版本:11.0.18
  • 操作系统:M1芯片Mac OS 13.3.1

解决步骤

1. 确认JDK架构适配M1

执行终端命令检查当前Java架构:

java -version

输出中需包含aarch64或arm64,否则需替换为ARM64版本的JDK 11(如Azul Zulu、Adoptium提供的ARM64安装包)。

2. 清理JNA缓存文件

删除JNA生成的x86_64架构临时文件:

rm -rf ~/Library/Caches/JNA/

重新运行项目后,JNA会自动生成适配ARM64的文件。

3. 强制SBT以ARM64模式启动

若SBT默认通过Rosetta以x86_64运行,启动时指定ARM64架构和对应JDK路径:

JAVA_HOME=/your/arm64/jdk/path arch -arm64 sbt run

替换/your/arm64/jdk/path为实际JDK安装路径(如/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home)。

4. 更新项目JNA依赖版本

若项目直接依赖JNA,升级到支持ARM64的版本(5.13.0及以上),在build.sbt中修改:

libraryDependencies += "net.java.dev.jna" % "jna" % "5.13.0"

内容的提问来源于stack exchange,提问作者laban_luka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:17:18