我有sourcehandler.java类,其代码为
public class SourceHandler {
String PrpPath = null;
Properties prop = null;
public Properties loadConfigProperties() {
try {
System.out.println("Propertiess " +PrpPath );
InputStream in =new FileInputStream(new File(PrpPath ));
prop.load(in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return prop;
}
和另一个班级的主要方法,
public static void main(String[] args) throws ParserConfigurationException,
Exception {
try {
SourceHandler conf = new SourceHandler();
conf.setProperties("C:/config.properties");
Properties p = conf.loadConfigProperties();
System.out.println("Done");
} catch (DOMException dome) {
// TODO: Add catch code
dome.printStackTrace();
}
现在,如果我运行代码,它会在行prop.load(in);
堆栈跟踪:
显示java.lang.NullPointerException 在DecryptEncryptSource.SourceHandler.loadConfigProperties(SourceHandler.java:98) 在DecryptEncryptSource.SourceHandler.updateCofigDestn(SourceHandler.java:151) 在DecryptEncryptSource.MainClass.main(MainClass.java:27)
答案 0 :(得分:0)
首先,
InputStream in =new FileInputStream(new File(Properties));
应该更好地阅读
InputStream in =new FileInputStream(new File(propertyFileName));
避免任何歧义;然后:
C:\config.properties
C:\\config.properties
;或者你试试C:/config.properties
关于更新;你有这条线:
Properties prop = null;
并进一步向下:
prop.load(in);
你对NPE感到惊讶吗?真?提示:使用文件路径查看代码并创建该Property对象;而不只是在空对象上调用方法。
真正的答案是一遍又一遍地阅读here。
(对于那些想知道为什么我没有复制的人......我再也不能了,因为我已经在另一个原因上已经请求了)