2012-04-14 13 views
2

これを試して数時間後、私は困惑します。私は多少Javaに慣れていて、助けをいくつか使うことができます。バッファーストラテジー不正な状態の例外

ザ・スタックトレース:

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) 

エラーは、ここでのコード行と一緒に表示されます。

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

奇妙なことは、それは私のデバッグ中に、このエラーを与えることで、その後に続きます完璧に実行してください。 runnable jarファイルから起動するとうまく動作します。

+0

[heisenbugs](http://ja.wikipedia.org/wiki/Heisenbug)が好きではないですか? – amit

+1

私はそれを理解しました。私は単純にcreateBufferStrategy()を何度も呼びました。 :D – TheElephantSeal

+1

今後の読者にも役立つかもしれません。この問題の解決が完了したら、問題の内容とその解決方法を投稿する必要があります。 [答えとして - あなたの質問に答えるのに間違いがない限り、それは合っていて、味わい深いです。 – amit

答えて

3

おそらく、createBufferStrategy()に電話をかけたときにコンポーネントが表示されていないことが考えられます(しばらく経っています)。後で呼び出すようにしてください。

あなたのアプリが引き続き実行されるという事実は、コンポーネントがバッファリングされていない戦略にデフォルト設定されていることを意味します。

関連する問題