2012-06-20 42 views
3

我試圖在我的maven項目中讀取文件/src/main/resources/file.txt。getClass()。getResource(「/」)在命令行中返回空值

我使用

URL url=this.getClass().getResource("/"); 
String filePath=url.getPath()+"file.txt"; 

URL對象獲得時,這是運行直通月食正確的值。

但是,當我打包的jar和命令行運行它:

jar -cp myjar.jar SampleTest 

它返回null「URL」對象,並拋出下一行一個NullPointerException。

我使用文件瀏覽器打開了我的Jar文件並進行了檢查。它在Jar中的「/」位置有'file.txt'。

我要去哪裏錯了?

+1

你應該試試'URL url = getCl驢()。getResource(「/ file.txt」);''字符串filePath = url.getPath();' – sergiofbsilva

回答

7

在jar文件裏面通常沒有目錄。爲此它將返回null


如果你想要得到的文件,你可以直接獲得該資源:

URL fileUrl = getClass().getResource("/file.txt"); 
... 

或者乾脆:

InputStream fileInputStream = getClass().getResourceAsStream("/file.txt"); 
+1

嗯,它在日食中工作正常。 「/」指向在eclipse中運行時的/ target/classes目錄。 – user691197

+1

正如我在我的答案中所寫:* jar文件內沒有目錄* - 例如您無法獲取不存在的資源(目錄)。當你從eclipse運行程序時,你的類路徑指向一個文件路徑/目錄。在該環境中,您可以使用'Class.getResource'獲取目錄信息。 – dacwe

+0

是否有可能使用getResource(「/ dir」)通過調整項目pom.xml以某種方式在jar中獲取目錄URL? – user691197

2

你應該是文件移動到您的CLASSPATH,並得到它像這個:

InputStream is = this.getClass().getResourceAsStream("file.txt"); 
+0

'file.txt'在'/'中。 – dacwe

+0

文件似乎在類路徑 –

+0

你假設這是在類路徑中。您的JAR是否具有類路徑條目的清單?如果不是,請添加一個。 – duffymo

相關問題