2017-06-11 63 views
1

我是NetBeans中的新成員,並且在兩個IDE都找不到我的文件時遇到問題。 如果我在PowerShell中編譯並運行我的程序,它將完美運行。 ExceptionError類似於這個「java.io.FileNotFoundException:model \ field \ levels \ map01.field」。 我的軟件包是。NetBeans和Eclipse FileNotFoundException

  • 控制器
  • model.field.levels
  • view.tiles

在Field.java:

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

在FieldReader.java:

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>屬性>運行>工作指令時設置工作指令。獲得絕對路徑可以讓我找到解決方案,所以謝謝Thorbjorn的提示。 :D

+1

我強烈建議捕獲filenotfoundexceptions,並用包含未找到文件的絕對路徑的描述進行包裝,以便它成爲堆棧跟蹤的一部分。它會爲你節省很多工作。 –

0

您正在依賴相對路徑,這要求將當前工作目錄設置爲有用的東西。 Java不會自動執行此操作,因此您(或您的IDE)在啓動程序時需要執行此操作。一個非常有用的工具是

File f = .... 
System.out.println(f.getAbsolutePath()); 

告訴你什麼是實際正在尋找。當你獲得更高級的時候,你可以讓JVM在哪裏找到你的課程,然後推斷出你需要的文件的位置。

但是請注意,當包裝java程序時,所有東西都打包在一個jar文件中。那麼你目前的方法將無法工作。無論您是在IDE中還是在生產環境中運行(但其他程序都不容易看到這些文件),您應該可以輕鬆查看可在類路徑中找到的資源。這是新程序員遇到的一個非常常見的問題,因此您現在不妨從現在開始,而不是稍後重新編寫程序。