2017-01-23 39 views
2

我試圖訪問從我的項目的目錄中的文件,讓我們把它空指針獲得資源時,如流

src/main/project/foo/bar.txt 

在課堂MyClass

但是當我做:

InputStream is = MyClass.class.getResourceAsStream("bar.txt"); 

並且用InputStream做任何事情,例如

is.toString(); 

我得到了NullPointerException

我也曾嘗試:

MyClass.class.getResourceAsStream("/bar.txt"); 

MyClass.class.getResourceAsStream("./bar.txt"); 

是否有額外的東西,我需要做的文件不在與我打電話的課程相同的包?此應用程序部署在TomCat上,因此對文件路徑的絕對引用是不切實際的。

編輯:對於標記爲nullpointer的副本的人,我知道什麼是空指針,顯然它找不到資源。至於爲什麼就是這樣,我需要幫忙搞清楚。

+3

是什麼讓你覺得'src/main/project/foo/bar.txt'以某種方式「捆綁」到你的類路徑中? – 2017-01-23 19:01:36

+0

可能的重複[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it ) –

+0

你如何運行你的應用程序?你的類路徑是什麼? –

回答

2

如果你的班級在src/main/project/foo/MyClass.javaMyClass.class.getResourceAsStream("bar.txt");應該沒問題。 如果你的資源是在不同的文件夾中的項目不是類應用中:

MyClass.class.getClassLoader().getResource("main/project/foo/bar.txt"); 
一般

MyClass.class.getClassLoader().getResource("package/<subpackage/>filename"); 

據我所知,這適用於任何類在同一個項目中的任何位置。 MyClass.class.getResourceAsStream();相對於myClass的位置運行,您無法更改該位置。