M1芯片Mac运行LWJGL项目报no matching architecture错误求解决方案
问题根源
你遇到的报错核心是架构不匹配:你当前使用的LWJGL 2版本仅提供x86架构的macOS原生库,而你使用的Apple M1芯片是arm64架构,无法直接加载x86的liblwjgl.dylib库文件,所以出现no matching architecture in universal wrapper报错。
可行解决方案
- 方案1:替换为LWJGL3后端(推荐,原生支持M1,性能最优)
如果你使用LibGDX框架,只需在项目的Gradle/Maven构建配置中,将desktop模块的依赖从gdx-backend-lwjgl(LWJGL2后端)替换为gdx-backend-lwjgl3(LWJGL3后端),同时将启动类中的LwjglApplication替换为Lwjgl3Application,对应调整启动参数即可。LWJGL3从3.2.3版本开始原生适配Apple Silicon架构,无需转译即可正常运行。 - 方案2:通过Rosetta 2转译运行(适合暂时无法更换LWJGL版本的场景)
找到你当前使用的JDK安装路径,右键点击JDK应用程序,选择「显示简介」,勾选「使用Rosetta打开」选项,重启IDE后再次运行项目即可。该方案会将整个Java进程以x86架构转译运行,可兼容旧版LWJGL2的x86原生库。 - 方案3:升级原生LWJGL版本
如果你们项目是直接基于LWJGL封装图形层,直接将LWJGL依赖升级到3.2.3及以上的稳定版本,官方已提供arm64架构的macOS原生库,原生适配M1芯片。
补充排查点
- 如果你选择原生arm64运行方案,请确认你安装的JDK是arm64架构版本,若安装的是x86架构的JDK,即使使用LWJGL3也会出现架构不匹配问题。
内容的提问来源于stack exchange,提问作者Michelle
相关产品推荐
相关产品推荐

