有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java LibGDX应用程序挂起在initializeglfw()上

我注意到,最近当我运行LibGDX游戏时,启动需要20秒,这很奇怪,因为我只加载了一些资源。我在我的主要方法中设置了断点,以确定应用程序被卡住的位置,当我拨打这条电话时,它被卡住了:

new Lwjgl3Application(new GdxGame(), config);

在LWJGL3应用程序构造函数中,它挂起此方法调用:

initializeGlfw();

看起来是这样的:

static void initializeGlfw() {
        if (errorCallback == null) {
            Lwjgl3NativesLoader.load();
            errorCallback = GLFWErrorCallback.createPrint(System.err);
            GLFW.glfwSetErrorCallback(errorCallback);
            if (!GLFW.glfwInit()) {
                throw new GdxRuntimeException("Unable to initialize GLFW");
            }
        }
    }

在这种方法中,它会卡在createPrintGLFW.glfwInit()上。打印方法如下所示:

public static GLFWErrorCallback createPrint(PrintStream stream) {
        return new GLFWErrorCallback() {
            private Map<Integer, String> ERROR_CODES = APIUtil.apiClassTokens((field, value) -> 0x10000 < value && value < 0x20000, null, GLFW.class);

            @Override
            public void invoke(int error, long description) {
                String msg = getDescription(description);

                stream.printf("[LWJGL] %s error\n", ERROR_CODES.get(error));
                stream.println("\tDescription : " + msg);
                stream.println("\tStacktrace  :");
                StackTraceElement[] stack = Thread.currentThread().getStackTrace();
                for ( int i = 4; i < stack.length; i++ ) {
                    stream.print("\t\t");
                    stream.println(stack[i].toString());
                }
            }
        };
    }

所有这些方法都来自Lwjgl库。有人知道为什么我的应用程序会被这些方法调用卡住吗


共 (1) 个答案

  1. # 1 楼答案

    我也遇到过同样的问题,需要将其绑定到您所在的机器上。我用GLFW制作了一个干净的VS15解决方案,并在几台不同的PC上运行,发现只有我的台式机有这个问题。我还测试了GLFW的LWJGL结合,得到了相同的结果

    [EDIT]等待发生在glfwInit()调用中

    /* Initialize the library */
    if (!glfwInit()) // stuck here
        return -1;
    
    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(1920, 1080, "Hello World", NULL, NULL);
    

    我在openGL论坛上看到了一篇归档的post帖子,其中提到了一个类似的问题,但它相当古老,可能指的是一个稍微不同的问题

    我可以建议你检查一下,你的构建文件夹是否被排除在任何杀毒软件之外,有时他们会将生成的可执行文件视为潜在威胁,因此可能会很慢,但我不认为这是你的问题

    可悲的是,对我来说唯一有效的选择是干净地安装windows,尽管当我连接虚拟现实耳机并在几天后再次出现时,这个漏洞神秘地停止了显现。希望你的运气比我好,不必清洁安装你的操作系统,如果你找到一个不那么麻烦的解决方案,一定要传播出去