Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的游戏在Linux上运行良好,但在Windows上运行不好?(Java.jar)_Java_Linux_Windows_Multithreading_Jar - Fatal编程技术网

为什么我的游戏在Linux上运行良好,但在Windows上运行不好?(Java.jar)

为什么我的游戏在Linux上运行良好,但在Windows上运行不好?(Java.jar),java,linux,windows,multithreading,jar,Java,Linux,Windows,Multithreading,Jar,在.jar中部署我的游戏时,它在Linux/Mac上运行良好,没有错误 然而,在Windows上(特别是到目前为止正在测试Windows 10),我在启动时遇到这些错误,然后在JFrame中出现一个空白屏幕: Exception in thread "PooledThread7" java.lang.IllegalStateException: Buffers have not been created at sun.awt.windows.WComponentPeer.getBackB

在.jar中部署我的游戏时,它在Linux/Mac上运行良好,没有错误

然而,在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)

  • 对于第一个错误,将
    -Dsun.java2d.d3d=false添加到命令行可能会有所帮助(禁用Direct3D用于2D渲染)。例如:

    java-Dsun.java2d.d3d=false-jarsome.jar

  • 至于第二个,我们需要看看您如何编写文件(提到FileWriter),例如,您可能没有
    res\maps
    目录


  • 我使用BufferedWriter编写文件,并使用InputStream和Scanner读取文件。使用哪个类并不重要,但如何使用它们,实际代码会很有帮助。@MitchWeaver命令行选项有助于解决第一个问题吗?有点,它会降低错误的发生率,但它也会大幅降低帧速率(200+降至~16 fps)。我认为这实际上对问题没有帮助。错误不在于阅读,而在于写入
    res\maps\map.txt
    这一部分已经修复,但这是一个小问题。第一个问题是主要问题。到目前为止,我刚刚将渲染方法放在一个try-catch中,捕获IllegalStateException,但是现在在控制台中垃圾发送错误时,帧会闪烁。似乎只有每隔几帧才能通过try-catch块。
    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)
    
    InputStream is = Game.class.getResourceAsStream("/map.txt")
    Scanner scanner = new Scanner(is);
    
    (for loops to iterate over the data)