2017-06-11 1 views
1

NetBeansの新機能で、両方のIDEでファイルが見つからないという問題があります。 PowerShellで私のプログラムをコンパイルして実行すると、完全に動作します。 "java.io.FileNotFoundException:model \ field \ levels \ map01.field"のようなExceptionErrorがあります。 私のパッケージはあります。NetBeansとEclipse FileNotFoundException

  • コントローラ
  • model.field.levels
  • view.tiles
  • Field.javaで

:FieldReader.javaで

public void setField() { 
    FieldReader fr = new FieldReader(); 
    field = fr.load("model/field/levels/map01.field"); 
} 

public int[][] load(String path){ 
    int field[][] = null; 
    try { 
     File file = new File(path); 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String s = null; 
     int line = 0; 
     int x = 0; 
     int y = 0; 
     while((s = br.readLine()) != null) { 
      if(line == 0) { 
       int start = 0; 
       int split = 0; 
       for (int i = 0; i < s.length(); i++) { 
        if(s.charAt(i) == 32) start = i + 1; 
        if(s.charAt(i) == 'x') split = i; 
       } 
       x = Integer.parseInt(s.substring(start, split)); 
       y = Integer.parseInt(s.substring(split + 1)); 
       System.out.println(x); 
       System.out.println(y); 
       field = new int[x][y]; 
      } 
      if(line >= 2) { 
       for (int i = 0; i < x; i++) { 
        field[i][line - 2] = Character.getNumericValue(s.charAt(i)); 
       } 
       System.out.println(s); 
      } 
      line++; 
     } 
     br.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return field; 
} 

ファイルは適切な場所にあり、画像のような他のファイルをロードすることですべて正常に動作します。

+1

現在の作業ディレクトリを意味のあるものに設定して、相対パスが解決されることを期待します。 Javaは現在の作業ディレクトリを設定しません。 –

+1

'file.getAbsolutePath()'を印刷してみてください –

+0

私はこれを試しましたが、何か奇妙なことが起こります。 – SeTirap

答えて

0

問題はすべて解決済みです。 NetBeansでは、実行中にProkekt> Properties> Run> Working Direktoryを右クリックして作業ディレクトリを設定することができます。絶対パスを取得することは私を解決に導くので、Thorbjornのヒントに感謝します。 :D

+1

filenotfoundexceptionsの捕捉を強くお勧めします。見つからないファイルの絶対パスを含む記述でラップすると、スタックトレースの一部になります。それはあなたに一日多くの仕事を節約します。 –

0

現在の作業ディレクトリを有用なものに設定する必要がある相対パスに依存しています。 Javaはこれを自動的に行いませんので、プログラムを起動するときにあなた(またはあなたのIDE)がこれを行う必要があります。非常に便利なツールは、実際に探しているものを教えてくれることを教えてください。

より高度なものになると、JVMにクラスが見つかった場所を尋ねて、必要なファイルの場所を推測することができます。

ただし、Javaプログラムをパッケージ化するときは、すべてがjarファイル内にパックされています。それであなたの現在のアプローチはうまくいかないでしょう。 IDEにあるかプロダクションで実行されているか(ただし、他のプログラムでファイルが見えにくい場所)にかかわらず、クラスパスで簡単に見つかるリソースを調べる必要があります。これは、新しいプログラマーが参加する非常に一般的な問題です。後でプログラムを再作成するのではなく、今すぐ始めることもできます。

関連する問題