2017-07-29 17 views
0

私はトップダウンシューティングゲームを作っていますが、jarを書き出したときに世界を読み込むことはできません。世界のコンストラクタで世界をロードFileReaderはエクスポート時にリソースフォルダからJavaを読み取れません

world = new World(handler, "res/worlds/world1.txt"); 

新しい世界を作る

loadWorld(path); 

loadWorld機能は、この行が含まれます

String file = Utils.loadFileAsString(path); 

をし、その上に、私はロードしますファイルのすべての内容をint [] []配列にコピーしてください。

私はこのコードを持っているのUtilsクラスで

public static String loadFileAsString(String path) { 
    StringBuilder b = new StringBuilder(); 
    try { 
     BufferedReader br = new BufferedReader(new FileReader(path)); 
     JOptionPane.showMessageDialog(new JFrame(), "File Loaded (Dev testing)"); 
     String line; 
     while((line = br.readLine()) != null) 
      b.append(line + "\n"); 
     br.close(); 
    } catch(IOException e) { 
     e.printStackTrace(); 
    } 

    return b.toString(); 
} 

をしかしJOptionPaneのウィンドウが表示されないので、それは、

BufferedReader br = new BufferedReader(new FileReader(path)); 

部分に貼り付けます。

Eclipseで実行しているときには動作しますが、Runnable Jarファイルとしてエクスポートしたときには動作しません。私のエクスポートされたjarファイルの

画像は7zipをにオープン:http://imgur.com/AX240ha

すべてのヘルプは理解されるであろう! .jarが置かれwhereever

Regads、 Kerdo K.

+0

JOptionPaneは表示されませんが、IOExceptionはスローされません。どうやら、私はジャーと同じディレクトリに**ファイル** 'res/worlds/world1.txt'がないと思います。 –

答えて

2

プログラムでは、ディレクトリ内の世界のフォルダを検索します。しかし、世界のフォルダが瓶の中にあるので、それは見つからないでしょう。世界はあなたのjarファイルの外のフォルダ

  • 移動
  • ロード次のような特別なコードを使用してjarファイル内部からのデータ:

    InputStream input = World.class.getResourceAsStream("/worlds/world1.txt"); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
    

もしそうなら、あなたは、次の2つのソリューションを持っています1つのjarファイルを他の人に送信したいだけなので、2番目のオプションを使うべきです。しかし、Steamや単純なインストーラのようなプラットフォームを使用する場合は、最初のオプションを使用する必要があります。

2番目のオプションを選択したときに解像度ソースフォルダをフォルダ(RESフォルダを右クリックして行った場合、コードが唯一のEclipseに働くかもしれないことに注意してください、:ビルド・パス>ソースとして使用しますフォルダ)。

+0

変更する必要があるかどうかによって、ファイルをjarファイルに保存するかどうかを決定します。そして2番目のオプションはeclipseで動作するはずです。 –

+1

動作しましたが、パスから "/ res"を削除するのを忘れました。ありがとう! – Kerdo

+0

'world = new World(ハンドラ、" /worlds/world1.txt ");' – Kerdo