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

Mac系统下LWJGL调用glfwCreateWindow卡住无法运行问题求助

Mac系统LWJGL调用glfwCreateWindow卡住解决方案

你的代码存在2个直接触发问题的错误,同时缺少Mac平台专属的GLFW配置和JVM启动要求,按以下步骤修改即可解决:

  • 重复调用glfwInit():你在初始化判断逻辑中已经调用过一次glfwInit(),后续又额外触发了一次初始化,会导致GLFW状态异常,直接删除多余的第二次glfwInit()即可。
  • 缺少Mac平台强制要求的OpenGL兼容配置:Mac系统对OpenGL 3.3及以上版本有强制适配要求,必须额外添加两个窗口配置项,否则会出现窗口创建失败、卡住的问题。
  • 缺少Mac专属JVM启动参数:Mac要求所有UI相关操作必须运行在首线程,未添加对应参数时GLFW的窗口调用会直接卡住。

修改后的init方法代码

private void init() {
    if(!glfwInit()) {
        System.err.println("ERROR: can't initialize GLFW");
        // 初始化失败直接抛出异常终止运行,避免后续空操作
        throw new IllegalStateException("Unable to initialize GLFW");
    }
    
    glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
    glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    // 新增Mac平台必须的两个OpenGL兼容配置
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    
    windowID = glfwCreateWindow(800, 600, "Window", 0, 0);
    // 新增窗口创建失败判断,避免后续操作空指针
    if (windowID == 0) {
        throw new RuntimeException("Failed to create GLFW window");
    }
    glfwMakeContextCurrent(windowID);
    GL.createCapabilities();
    glfwShowWindow(windowID);
}

启动参数配置

运行程序前需要在VM选项中添加如下参数:
-XstartOnFirstThread
如果你使用IDEA,配置路径为:运行配置 -> 修改选项 -> 添加VM选项,把上述参数填入即可;其他开发工具可在对应启动配置的VM参数栏添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:09:04