2011-06-17 104 views
0

我有一個Maven項目結構是這樣的:爲什麼這個類路徑資源爲空?

  • 的src/main/JAVA /測試/ App.java
  • 的src /主/資源/配置/ message.txt

內部應用程序的.java,我有這樣一行:

InputStream is = Thread.currentThread() 
    .getContextClassLoader() 
    .getResourceAsStream("/config/message.txt"); 

我試着讓我能找到#2和谷歌的資源的每一個變化,但它似乎總是當我返回空運行mvn exec:java -Dexec.mainClass=test.App。我在這裏錯過了什麼?

+0

您是否已驗證在構建的Jars中message.txt實際上是**?你可以將`jar`工具列表的輸出轉儲到你的問題的編輯中嗎?我認爲有些人對Jar的確切結構感到困惑。我確定。 – 2011-06-17 13:22:50

回答

1

嘗試:

InputStream is = test.App.class.getResourceAsStream("/config/message.txt"); 

或者乾脆:

InputStream is = getClass().getResourceAsStream("/config/message.txt"); 
+0

/config/message.txt與test.App不在同一個包中... – PeterMmm 2011-06-17 12:54:47

+1

這就是爲什麼我在`/`前面加上路徑的原因。否則,`test.App.class.getResourceAsStream()`將在`/ test/config/message.txt`中尋找(從* current * class目錄開始)。 – 2011-06-17 13:16:28

0

你可以試試這個:

InputStream is = this.getClass().getResourceAsStream("/config/message.txt"); 
0

我敢打賭:

InputStream is = App.class. 
    getResourceAsStream("../../resources/config/message.txt"); 

我不明白你想用currentThread()在這裏做什麼。