2012-04-14 5 views
2

Nach ein paar Stunden zu versuchen, dies auszuarbeiten, bin ich ratlos. Ich bin etwas neu in Java und könnte etwas Hilfe gebrauchen.BufferStrategy Illegal State Exception

Der Stack-Trace:

java.lang.IllegalStateException: Component must have a valid peer 
at java.awt.Component$FlipBufferStrategy.createBuffers(Unknown Source) 
at java.awt.Component$FlipBufferStrategy.<init>(Unknown Source) 
at java.awt.Component$FlipSubRegionBufferStrategy.<init>(Unknown Source) 
at java.awt.Component.createBufferStrategy(Unknown Source) 
at java.awt.Canvas.createBufferStrategy(Unknown Source) 
at java.awt.Component.createBufferStrategy(Unknown Source) 
at java.awt.Canvas.createBufferStrategy(Unknown Source) 
at com.mime.crystalnova.Display.render(Display.java:148) 
at com.mime.crystalnova.Display.run(Display.java:112) 
at java.lang.Thread.run(Unknown Source) 

Der Fehler erscheint hier mit dieser Codezeile zu sein:

BufferStrategy bs = getBufferStrategy(); 
if (bs == null) { 
    createBufferStrategy(3); 
    return; 
} 

Das Seltsame ist, dass es mir diese Fehlermeldung beim Debuggen gibt und dann weiter laufen einwandfrei. Es funktioniert auch gut, wenn es über eine ausführbare JAR-Datei gestartet wird.

+0

Liebst du nicht [heisenbugs] (http://en.wikipedia.org/wiki/Heisenbug)? – amit

+1

Ich habe es herausgefunden. Ich habe createBufferStrategy() einfach zu oft aufgerufen. : D – TheElephantSeal

+1

Es könnte auch für zukünftige Leser hilfreich sein. Sobald Sie die Lösung dieses Problems abgeschlossen haben, sollten Sie das Problem genau angeben und wissen, wie Sie es gelöst haben. [als Antwort - es ist nichts falsch, deine eigene Frage zu beantworten, solange es passt und mit gutem Geschmack] – amit

Antwort

3

Es hat wahrscheinlich damit zu tun, dass die Komponente zum Zeitpunkt des Anrufs createBufferStrategy() noch nicht sichtbar ist (es ist eine Weile her). Versuchen Sie es zu einem späteren Zeitpunkt anzurufen.

Die Tatsache, dass Ihre App weiterhin ausgeführt wird, bedeutet wahrscheinlich, dass die Komponente auf eine nicht gepufferte Strategie voreingestellt wurde.