2013-02-10 115 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(); 

}