ゲームを.jarにデプロイすると、Linux/Macでエラーなく正常に動作します。私のゲームはLinuxではうまく動くが、Windowsではうまくいかないのはなぜですか? (Java .jar)
しかしWindowsの、(特にまだのとしてWindows 10をテスト)で、私は起動時にこれらのエラーを取得し、私のJFrameの中に空白の画面:
Exception in thread "PooledThread7" java.lang.IllegalStateException: Buffers have not been created
at sun.awt.windows.WComponentPeer.getBackBuffer(Unknown Source)
at java.awt.Component$FlipBufferStrategy.getBackBuffer(Unknown Source)
at java.awt.Component$FlipBufferStrategy.flip(Unknown Source)
at java.awt.Component$FlipBufferStrategy.show(Unknown Source)
at engine.Game$Render.render(Game.java:250)
at engine.Game$Render.run(Game.java:167)
at engine.PooledThread.run(ThreadPool.java:89)
と
java.io.FileNotFoundException: res\maps\map.txt (The system cannot find the path specified)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at engine.testMapCreator.init(testMapCreator.java:69)
at engine.Game.init(Game.java:126)
at engine.Game.main(Game.java:80)
だから、 Windowsは私のスレッドプールのレンダリングを好まず、Linux上の.jar内のマップファイルを見つけている間に何らかの理由でWindows上でそれらのファイルを見つけられません。
... "Write once、Run anywhere"のようにそうですね。何が問題なの?
編集:最初のエラーはおそらく役立つコマンドラインに-Dsun.java2d.d3d=false
を追加するための
InputStream is = Game.class.getResourceAsStream("/map.txt")
Scanner scanner = new Scanner(is);
(for loops to iterate over the data)
エラーは読み込み中ではなく、「res \ maps \ map.txt」に書き込まれます –
その部分は修正されていますが、それは小さな問題です。最初の問題は主な問題です。今のところ私はレンダリングメソッドをIllegalStateExceptionをキャッチするtry catchに入れましたが、コンソールでエラーをスパムしながらフレームがちらつきます。あたかも数フレームごとにtry-catchブロックを通過するように見えます。 –