2012-12-26 28 views
9

我試圖運行下面的應用程序,它試圖從classpath中加載一個文件(src/main/resources/test.txt):的src/main /資源利用MVN Exec時我怎樣才能到classpath中:JAVA

package com.example; 

public class Main { 
    public static void main(String[] args) { 
     System.out.println(Main.class.getResource("test.txt")); 
    } 
} 

當我做mvn exec:java -Dexec.mainClass=com.example.Main時,我在命令行上打印出null

那麼如何獲取src/main/resources中的文件添加到類路徑?請注意,我運行了mvn package,檢查了生成的target/test.jar,並確認它包含頂層的test.txt

回答

6

的斜線應該解決它

System.out.println(Main.class.getResource("/test.txt")); 

如果劃歸test.txt文件您的代碼將工作:

src/main/resources/com/example 
+2

如果你把test.txt的插入COM /例子包吧不管用。爲了正確地工作,你需要把test.txt放到src/main/resources中。 – khmarbaise

+2

好的。我想我現在明白了。所以'getResource'解釋相對於類實例的路徑(因爲'Main'在'com.example'中我偶然尋找'src/main/resources/com/example/test.txt'而不是'src/main/resources/test.txt') – user1930555

+0

太棒了。我自己在想這個。 – ktm5124