2014-01-16 64 views
0

訪問文件在我的Maven項目:從類路徑

src/main/java/App --> has Main 
src/main/resources/file.json 

public class App 
{ 
    public static void main(String[] args) 
    { 
     URL url = App.class.getClass().getResource("/file.json"); 
     File file = new File(url.getPath()); 

據我瞭解這些Maven的docs,我應該能夠訪問file.json,因爲它(應該是)在類路徑中,因爲它位於src/main/resources

但是,我在url.getPath()調用上得到NullPointerException

+0

你沒有領先的'/'試過嗎? – Powerlord

+0

是的,但沒有運氣 –

+0

我總是使用類加載器的'getResource()'方法。另外,你如何執行'App.main'? – disrvptor

回答

1

你正在做的是獲取根類加載器(java.lang.Class的類加載器)的App.class.getClass(),它與你的應用類加載器不一樣。你想要做App.class.getResource()來代替。

+0

進行更改後,我運行'mvn exec:java -Dexec.mainClass = com.mycompany.app.App'來運行程序。最初我嘗試執行吐出JAR,但是意識到通過上面的命令運行它更簡單。由於CLASSPATH env var不足,我得到了一個'ClassDefNotFound'錯誤。 –

+0

另外我把file.json放在錯誤的主目錄下 –