Mac M1芯片运行JavaFX应用时jargon2-native-ri-backend库链接错误
解决M1 Mac上JavaFX应用的Jargon2本地库架构兼容问题
问题诊断
从错误栈可明确,jargon2-native-ri-backend:1.1.1提供的本地库仅包含i386、x86_64架构,不支持M1芯片的arm64架构,导致加载时抛出UnsatisfiedLinkError。
解决方案
1. 替换为纯Java实现的Jargon2后端
这是最简便的方案,无需修改业务代码,仅需更换依赖:
- 移除pom中的
jargon2-native-ri-backend依赖 - 添加纯Java后端依赖:
<dependency> <groupId>com.kosprov.jargon2</groupId> <artifactId>jargon2-pure-java-backend</artifactId> <version>1.1.1</version> <scope>runtime</scope> </dependency>
纯Java实现不依赖任何本地库,跨平台兼容性更好,你当前的密码哈希代码可完全保持不变。
2. 启用Rosetta运行IntelliJ及应用
Rosetta可让x86_64架构的程序在M1 Mac上运行,操作步骤:
- 找到Launchpad或应用文件夹中的IntelliJ IDEA图标
- 右键选择「显示简介」
- 勾选「使用Rosetta打开」
- 重启IntelliJ后重新运行JavaFX应用
此时JVM会以x86_64模式运行,可兼容现有jargon2本地库。
3. 手动编译支持arm64的本地库
若必须使用native-ri后端,可自行编译适配arm64的版本:
- 克隆jargon2-jvm项目源码
- 按照项目文档的编译说明,在M1 Mac上编译native-ri后端的arm64版本
- 将编译生成的
.jnilib文件替换到项目依赖对应路径,或安装到本地Maven仓库后修改pom依赖版本
内容的提问来源于stack exchange,提问作者Steo_94
相关产品推荐
相关产品推荐

