【问题标题】:LWJGL Display.isCloseRequested() throwing an error?LWJGL Display.isCloseRequested() 抛出错误?
【发布时间】:2013-02-10 20:16:28
【问题描述】:

嗯,我目前使用的是 Mac,我只是在创建一个简单的 LWJGL 测试程序以确保库能够正常工作......但是当我尝试获取显示器的关闭请求状态时,它会引发错误。 ..

我目前使用的是 Mac OSX 10.7.5,我使用的是 LWJGL 2.8.5,并且我正在运行最新的 java (1.7.0_13)。如果这是我犯的错误,请随时指出。

错误:

JavaVM WARNING: JAWT_GetAWT must be called after loading a JVM
Fatal error: Unable to create window.
org.lwjgl.LWJGLException: Could not get the JAWT interface
Exception in thread "main" java.lang.IllegalStateException: Cannot determine close requested state of uncreated window
    at org.lwjgl.opengl.Display.isCloseRequested(Display.java:546)
    at lwjgltest.LWJGLTest.start(LWJGLTest.java:26)
    at lwjgltest.LWJGLTest.main(LWJGLTest.java:13)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)

代码:

package lwjgltest;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

/**
 *
 * @author DealerNextDoor
 */
public class LWJGLTest {
    public static void main(String[] args) {
        new LWJGLTest().start(); // Line 13
    }

    public void start() {
        try {
            Display.setDisplayMode(new DisplayMode(640, 480));
            Display.setTitle("LWJGL Test");
            Display.create();
        } catch (LWJGLException e) {
            System.err.println("Fatal error: Unable to create window.");
            System.err.println(e);
        }

        while (!Display.isCloseRequested()) { // Line 26

            Display.update();
            Display.sync(60);
        }

        Display.destroy();
    }
}

【问题讨论】:

    标签: java macos lwjgl


    【解决方案1】:

    如果您查看错误,您会发现未创建窗口:Fatal error: Unable to create window.

    因此,您无法使用方法isCloseRequested()

    我想你会找到一些关于它为什么不创建here的信息

    【讨论】:

    • 好吧,如果我不能使用isCloseRequested(),那么我应该使用什么来查看用户是否试图关闭窗口?
    • @DealerNextDoor 首先问题是窗口是创建的。您可以在错误的前几行中看到它。
    • 是的,我刚刚意识到我忘记在 catch 语句的末尾添加System.exit(1),所以我关联了Exception in thread "main" ...,我的错。那只是我的一个非常非常愚蠢的错误......
    • @DealerNextDoor 但是,不幸的是,这对您没有帮助。它只会让您的应用程序在到达isCloseRequested() 检查之前退出。如果您查看我在答案中提供的链接,您会发现此库在 OSX 10 和 Java 7(甚至可能是 6)上可能存在问题。
    • 是的,我看到了。显然,LWJGL 在 Java 7 OSX 下完全崩溃了。
    【解决方案2】:

    将 java 降级到 1.6 应该会有所帮助。

    【讨论】:

    • 我想我会等到我回到我的电脑上,但还是谢谢你。这可能会解决我的问题。
    【解决方案3】:

    我将 Display.create(); 移动到类构造函数而不是方法内部,并且“无法确定未创建窗口的关闭请求状态”错误消失了。

    public Core() { // Main class constructor
    
        try {
            LibraryLoader.loadNativeLibraries();
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Error Loading Natives!");
        }
    
        Scanner in = new Scanner(System.in);
        startTime = System.currentTimeMillis();
    
        try {
            Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
            Display.create();
            input = new InputHandler();
            Display.setTitle(TITLE);
        } catch (LWJGLException e) {
            e.printStackTrace();
            System.exit(1);
            cleanUp();
    
        }
        initGL();
        mainLoop();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-10
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 2011-12-27
      相关资源
      最近更新 更多