2013-02-10 116 views
0

嗯,我目前正在使用Mac,并且我只是创建了一个简单的LWJGL测试程序,以确保该库可以正常工作......但是当我尝试获取Display的关闭请求状态时,它会引发错误..LWJGL Display.isCloseRequested()抛出一个错误?

我目前使用的是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(); 
    } 
} 

回答

0

如果你看看你的错误,你会发现,一个窗口不被创建:Fatal error: Unable to create window.

结果,您不能使用方法isCloseRequested()

我认为你会发现为什么它不创造here

+0

那么,如果我不能使用'isCloseRequested()',那么我应该用什么来查看用户是否试图关闭窗口? – DealerNextDoor 2013-02-10 21:03:42

+0

@DealerNextDoor首先,问题在于窗口是** NOT **创建的。你可以在错误的前几行看到它。 – Michael 2013-02-10 21:05:14

+0

是的,我刚刚意识到我忘了添加'System.exit(1)'到catch语句的末尾,所以我将“线程中的异常”主要“...',我的坏。这只是我的一个非常非常愚蠢的错误... – DealerNextDoor 2013-02-10 21:12:27

0

降级的Java 1.6应该帮助一些信息。

+0

我想我会一直等到我回到电脑上,不过谢谢。这可能会解决我的问题。 – DealerNextDoor 2013-02-10 21:17:15

0

我将我的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(); 

}