2010-06-28 68 views
1

我正在一個項目中工作,我需要一個資源。我試圖讓使用此代碼是:JSONParser getResourceAsStream

InputStream爲= JSONParser.class.getResourceAsStream( 「a.json」);
String jsonTxt = IOUtils.toString(is);

a.json文件位於項目的主文件中。

確切的問題是:

異常在線程 「主」 顯示java.lang.NullPointerException
在java.io.Reader中在java.io.InputStreamReader中(Reader.java:61)
(。 InputStreamReader.java:55)
在org.apache.commons.io.IOUtils.copy(IOUtils.java:1049)
在org.apache.commons.io.IOUtils.toString(IOUtils.java:359)
at com.playence.parser.JSon.main(JSon.java:28)

調試,我看到變量'是'是空的,我想這就是爲什麼NullPointException,bugt我不知道如何解決它。

任何幫助?

Thans提前。

回答

1

最後我發現我的問題,我解決了它。
它與我的Eclipse配置有關:

項目 - propperties - 源

有我在MYPROJECT/src目錄/主/資源排除**。

因此該目錄中的文件不在類中。我解決它只是把排除(無)。

現在一切正常。 無論如何謝謝你!

2

你有例外,因爲你的Class.getResourceAsStream()找不到a.json,在這種情況下,它將返回null而不是流。

您的a.json文件應該與JSONParser類中的文件夾保持一致。是你的一個類還是來自外部庫的utils?

如果它是一個庫,也許你可以從一類就是在同一個包a.json,然後流把它作爲參數:

InputStream is = YourClassBesidesTheFile.class.getResourceAsStream("a.json"); 
String jsonTxt = IOUtils.toString(is); 

或可能使用的完整路徑的文件,像"/some/package/etc/etc/a.json"

InputStream is = JSONParser.class.getResourceAsStream("/some/package/etc/etc/a.json"); 
String jsonTxt = IOUtils.toString(is); 

爲了解決這個問題,您的文件必須由Class.getResourceAsStream()方法發現,雖然真正的問題其實是在檢索文件內容流,無論你怎麼做。

+0

我把文件放在src/main/resorces中,並且Y也嘗試將它放到與調用它的類相同的文件中,但是我得到了同樣的錯誤。 鍵入洞的路徑也是相同的結果。 也許它可能是ecplipse和庫問題? – 2010-06-28 14:21:43

+0

順便說一句,我通過導入maven依賴使用JSONParser,我的項目中沒有JSONParser.java。 – 2010-06-28 14:22:30

+0

@ mujer-esponja:我看到你正在使用src/main/resorces文件夾。你在使用Maven嗎? – 2010-06-28 14:24:27