MacOS下VSCode运行libGDX项目抛出-XstartOnFirstThread错误
解决M1 Mac上libGDX的GLFW线程初始化错误
你遇到的错误是M1 Mac特有的线程模型导致的,GLFW要求在进程的第一个线程运行,而M1的JVM默认线程行为和Intel不同,以下是针对性解决方法:
方法一:正确配置Gradle的Run任务
打开desktop模块的build.gradle文件,找到run任务块,添加针对Mac系统的JVM参数配置:
run { // 仅在Mac系统添加参数 if (System.getProperty('os.name').toLowerCase().contains('mac')) { jvmArgs += '-XstartOnFirstThread' } }
配置完成后,在IDE中同步Gradle项目(点击Gradle面板的刷新按钮),再重新运行项目。
方法二:手动配置IDE运行参数
如果Gradle配置未生效,直接在IDE的运行配置中添加参数:
- 打开Run/Debug Configurations(右上角运行按钮旁的下拉菜单→Edit Configurations)
- 找到DesktopLauncher的运行配置
- 在VM options输入框中添加:
-XstartOnFirstThread - 保存配置后重新运行
方法三:临时禁用GLFW线程检查(不推荐)
紧急情况下可以跳过GLFW的线程检查,但可能存在线程安全风险:
在DesktopLauncher的main方法开头添加以下代码:
import org.lwjgl.glfw.GLFW; public class DesktopLauncher { public static void main (String[] arg) { // 禁用线程检查 GLFW.glfwInitHint(GLFW.GLFW_CHECK_THREAD0, GLFW.GLFW_FALSE); Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); config.setTitle("My GDX Game"); new Lwjgl3Application(new MyGdxGame(), config); } }
方法四:检查环境兼容性
- 确保使用适配M1的ARM64架构Java版本(如Azul Zulu OpenJDK 11/17)
- 确保libGDX版本在1.10.0及以上,早期版本对M1支持不完善
内容的提问来源于stack exchange,提问作者host
相关产品推荐
相关产品推荐

