2017-06-14 32 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; 
} 
相关问题