2016-04-08 22 views
0

Oyunumu bir .jar uygulamasında dağıtırken, Linux/Mac üzerinde hiçbir hata olmadan düzgün çalışıyor. Windows üzerinde Ancak Oyunum neden Linux'ta çalışıyor, ancak Windows'da çalışmıyor? (Java .jar)

, (özellikle henüz olarak, Windows 10 test), benim JFrame sonra bu fırlatma hataları ve boş ekran olsun:

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) 

ve

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) 

Öyleyse Windows, iş parçacığı havuzu oluşturmama benzemiyor ve bir sebepten dolayı .jar Linux içindeki harita dosyalarını bulurken, Windows'da onları bulamıyor.

... "Bir kez yaz, Her yere koş", değil mi? Sorunlar ne olabilir?

düzenleme: İlk hata muhtemelen yardımcı olacaktır komut satırına -Dsun.java2d.d3d=false eklemek için

InputStream is = Game.class.getResourceAsStream("/map.txt") 
Scanner scanner = new Scanner(is); 

(for loops to iterate over the data) 
+0

Hata okumada değil, * yazmada * res \ maps \ map.txt ' –

+0

Bu bölüm düzeltildi, ancak bu küçük bir sorundur. İlk sorun ana sorun. Şimdiye kadar sadece render yöntemini bir catch yakalamada yakaladım. Şimdi IllegalStateException'ı yakaladım, ancak artık konsoldaki hatayı spam ederken kare titriyor. Sadece birkaç kare kare yakalama bloğundan geçiyor gibi görünüyor. –

cevap

0
  1. (2D işleme için Direct3D kullanımını devre dışı): Ben map.txt dosyalarını okuyorum nasıl budur . Ör:

    java -Dsun.java2d.d3d = false -jar some.jar ikincisi ise

  2. , size (FileWriter belirtilen) dosyalarını yazma nasıl görmek gerekir, bu olabilir Örneğin res\maps dizininiz yok.

+0

Dosyaları bir BufferedWriter kullanarak yazdım ve bir InputStream ve Tarayıcı kullanarak Dosyaları oku. –

+0

Hangi sınıfları kullandığınız önemli değil, onları nasıl kullandığınız önemli değil, gerçek kod yararlı olacaktır. –

+0

@MitchWeaver Komut satırı seçeneği, ilk sorunla yardımcı oluyor mu? –