2017-07-03 42 views
-1

我試圖從一個JSON文件讀給讀者,以便將其解析爲一個Java對象:`讀卡器/的getResourceAsStream返回null

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.Reader; 
import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

public class main { 

    public static void main(String[] args) throws IOException{ 

     try(Reader reader = new InputStreamReader(main.class.getResourceAsStream(
       "/Users/edwardk/IdeaProjects/practice_json/small_incidents.json"),"UTF-8")){ 
      Gson gson = new GsonBuilder().create(); 
      Person p = gson.fromJson(reader, Person.class); 
      System.out.println(p); 
     } 
    } 
} 

`

即時得到上運行一個NullPointerException 。

+1

的getResourceAsStream(正確的相對路徑)獲得的資源,從classpath。要從文件系統讀取文件,請使用FileInputStream。 –

回答

1

Resources不是files,並且該路徑/Users/edwardk/...看起來像文件路徑。

您應該使用Files API從文件中讀取,如果您在Windows上,則路徑將需要以C:/開頭,而不是/。如果您打算將文件作爲reasource加載,則應該使用相對於類路徑的文件路徑。例如,如果practice_json目錄在您的類路徑中,您可能只需要使用"small_incidents.json"

0

你的代碼是好的,但NullPointerException的產生是因爲

main.class.getResourceAsStream(
       "/Users/edwardk/IdeaProjects/practice_json/small_incidents.json"),"UTF-8") 

返回null。嘗試JSON文件粘貼到同一目錄main.java和變化:

main.class.getResourceAsStream(
       "small_incidents.json"),"UTF-8") 

或者指定small_ingredients.json

+0

這確實是問題所在,我通過將json文件移動到Recourses目錄來解決它。 – kislla

相關問題