2017-08-29 50 views
0

我不知道爲什麼我無法讀取與我的類處於同一級別的配置文件。我已經嘗試了下面的兩個代碼,但兩個輸入流都是空的。讀取配置文件與類相同的目錄返回null

public MyClass 
    public void getConfigurations() 
    { 
     String fileName = "myFile.conf"; 

     InputStream in = this.getClass().getResourceAsStream(fileName); 
     InputStream inNew = this.getClass().getClassLoader().getResourceAsStream(fileName); 
     System.out.println(in); 
     System.out.println(inNew); 
    } 
    public static void main(String[] arg){ 
     MyClass myClass = new MyClass(); 
     myClass.getConfigurations(); 
    } 
} 

輸出是:

null 
null 

這裏是我的目錄

MyProject 
    -src 
     -com 
      -test 
       -MyClass.java 
       -myFile.conf 
    -lib 

我要打包這個類轉換成可執行的JAR文件,所以我想它在兩個工作windows和linux。 當我打包jar文件時,我希望配置文件與我的課程級別相同。

我錯過了什麼嗎?

+1

何你執行你的代碼嗎?您的conf文件與_java_文件位於同一個目錄中。但它是否也複製到已編譯的_class_文件中? – dpr

+0

我想在搜索配置文件等資源時,應該將conf文件放入資源文件夾中。我不能確定它應該放在哪裏,但是在「經典」結構中,它應該看起來像這樣:對於java類,src/main/java和對於配置文件的src/main/resources。 –

+0

我沒有使用任何資源文件夾......我只是想從我的課程中讀取它。我正在檢查是否可以從我的課程中打開輸入流到我的配置文件中 –

回答

0

如果您不使用絕對路徑(路徑以/開頭),則在此情況下無法獲取文件位置。

由於您執行的是.class文件,而不是.java文件。如果您使用相對路徑在另一個文件夾中構建課程,則路徑基於.class文件所在的位置。

嘗試將類文件放在與java文件相同的目錄中。我想現在你把它們放在build文件夾中。

或者,試着讓它們像/src/com/test。這是絕對路徑。

相關問題