Mac M1设备上Play2 Maven插件1.0.0-rc5架构兼容问题求助
解决Mac M1(ARM64)上Play2 Maven项目的libjnotify.jnilib架构兼容问题
你的问题核心是当前使用的libjnotify.jnilib只包含x86_64/i386架构,不支持M1的ARM64,导致JVM加载失败。以下是几种可行的解决方法:
方法一:替换为ARM64兼容的jnotify原生库
自行编译ARM64版本的libjnotify:
- 获取jnotify的源码,从官方代码仓库拉取
- 在M1 Mac上用Xcode打开原生代码工程,编译目标架构选择
arm64,生成新的libjnotify.jnilib - 替换项目
target/native_libraries目录下的旧文件,或者在Maven依赖中配置引入这个适配后的库
验证:替换后执行以下命令确认架构支持:
lipo -info /Users/xxxx/my-project/target/native_libraries/libjnotify.jnilib输出中需包含
arm64字样。
方法二:用Rosetta 2兼容模式运行Maven
M1 Mac的Rosetta 2可以模拟x86_64环境,直接适配现有库:
- 右键终端应用 -> 显示简介 -> 勾选「使用Rosetta打开」
- 在这个新终端窗口中重新执行
mvn clean install和mvn play2:run,JVM会以x86_64模式运行,就能加载现有的libjnotify.jnilib了
方法三:替换依赖,移除jnotify依赖
如果不需要文件监听功能,或者可以用纯Java方案替代:
- 执行
mvn dependency:tree找到引入jnotify的依赖节点 - 在pom.xml中对该依赖添加排除规则:
<dependency> <!-- 原依赖 --> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <exclusions> <exclusion> <groupId>net.contentobjects.jnotify</groupId> <artifactId>jnotify</artifactId> </exclusion> </exclusions> </dependency> - 替换为纯Java的文件监听组件,比如Apache Commons IO的
FileAlterationObserver,避免依赖原生库
内容的提问来源于stack exchange,提问作者blackstorm
相关产品推荐
相关产品推荐

