2017-06-14 34 views
0

我有以下方法:NullPointerException異常時referenceing屬性文件

public String readJson(){ 
    String everything = ""; 
    try(BufferedReader br = new BufferedReader(new FileReader("https://stackoverflow.com/users/mypc/test/etc/one.json"))) { 
     StringBuilder sb = new StringBuilder(); 
     String line = br.readLine(); 

     while (line != null) { 
      sb.append(line); 
      sb.append(System.lineSeparator()); 
      line = br.readLine(); 
     } 
     everything = sb.toString(); 
     logger.debug("Everything: " + everything); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    logger.debug("line: " + everything); 
    return everything; 
} 

這工作得很好,因爲它是。我的問題是我不想硬編碼文件路徑/users/mypc/test/etc/one.json。

test.properties:

file1=/users/mypc/test/etc/one.json 

PropertiesHelper.java:

public String GET_FILE_ONE = "file1"; 

private static String one; 

public String getJsonFile(){ 
    one = config.getProperty(this.GET_FILE_ONE); 
    return one; 
} 

JsonReader.java:

private static PropertiesHelper helper; 

final String GET_FILE_ONE = helper.getJsonFile(); 

public String readJson(){ 
String everything = ""; 
try(BufferedReader br = new BufferedReader(new FileReader(GET_FILE_ONE))) { 
    StringBuilder sb = new StringBuilder(); 
    String line = br.readLine(); 

    while (line != null) { 
     sb.append(line); 
     sb.append(System.lineSeparator()); 
     line = br.readLine(); 
    } 
    everything = sb.toString(); 
    logger.debug("Everything: " + everything); 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
logger.debug("line: " + everything); 
return everything; 
} 

我試圖通過以下操作將其添加到屬性文件我在過去做過類似的事情,但是這次我得到了一個N​​ullPointerException。我一直盯着這個片刻,看不出有什麼不對。我在屬性文件中設置文件路徑的方式有什麼問題嗎?還是有其他我錯過的東西?

+0

添加異常消息,以便我們更好地瞭解發生了什麼。如果文件未找到,則應拋出FileNotFound異常,而不是NPE。所以我認爲你的問題在別處。 – DCON

+1

我發現了這個問題。你的'PropertiesHelper helper'永遠不會被創建。加入'PropertiesHelper helper = new PropertiesHelper();' – DCON

+0

此外,誰低估了這個問題;這是不合理的。即使解決方案很簡單,問題的格式也很好。 – DCON

回答

0

上面由Donnacha回答。

該問題已通過添加私有靜態PropertiesHelper helper = new PropertiesHelper()解決。到JsonReader.java。如下所示:

private static PropertiesHelper helper; 

private static PropertiesHelper helper = new PropertiesHelper(); 

final String GET_FILE_ONE = helper.getJsonFile(); 

public String readJson(){ 
    String everything = ""; 
    try(BufferedReader br = new BufferedReader(new FileReader(GET_FILE_ONE))) { 
     StringBuilder sb = new StringBuilder(); 
     String line = br.readLine(); 

     while (line != null) { 
      sb.append(line); 
      sb.append(System.lineSeparator()); 
      line = br.readLine(); 
     } 
     everything = sb.toString(); 
     logger.debug("Everything: " + everything); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    logger.debug("line: " + everything); 
    return everything; 
} 
相關問題