Properties.load NullPoint Exception

SignLCF 2012-08-04 05:16:54
----jar包内的代码----begin----
private void init() throws IOException{
private Properties setting;
InputStream in;
in = super.getClass().getClassLoader().getResourceAsStream("/SysConfig.properties");
setting = new Properties();
setting.load(in);
}
----end----

SysConfig.properties文件在src下的根目录,程序加载时这里报空指针。
这时一个web项目,同样的项目在别的机器上面运行的没有问题!
问题应该是读取不到SysConfig.properties配置文件。
我就想问下,读取配置文件位置是否和环境变量或者其他配置有影响???
...全文
245 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2012-08-05
  • 打赏
  • 举报
回复
楼上正确,问题就在于那个根,也就是 / 到底是哪个目录。
MiceRice 2012-08-04
  • 打赏
  • 举报
回复
放在 WEB-INF/classes 其实就够了的。

安全起见,还是做个测试吧。

你写一个JSP,内容很简单,直接:
<%
System.out.println(this.getClass().getResourceAsStream("/SysConfig.properties"));
%>
然后测试下看看,至少要先确保这个资源查找是有效的,逐步缩小问题范围。
SignLCF 2012-08-04
  • 打赏
  • 举报
回复
properties文件不能打入jar包的,一个配置文件,有可能要修改的,就放在src下的根目录和WEB-FNF/classes下;
MiceRice 2012-08-04
  • 打赏
  • 举报
回复
是否确定该properties文件被打入了jar包,或者放进了WEB-INF/classes 目录?

设置CLASSPATH很容易:
set CLASSPATH=xxxxooo;%CLASSPATH%
确保其在Tomcat运行环境中。
SignLCF 2012-08-04
  • 打赏
  • 举报
回复
in = this.getClass().getResourceAsStream("/SysConfig.properties");
执行也是一样空指针。
SysConfig.properties文件在src根目录下,怎么能将它或则其所在包放入ClassPath中呢,谢谢!
MiceRice 2012-08-04
  • 打赏
  • 举报
回复
主要是跟ClassLoader装载级别有关。

建议楼主试试看:
in = this.getClass().getResourceAsStream("/SysConfig.properties");

最好能确保 this 这个类,跟SysConfig.properties是在同一个装载级别。



或者直接把 SysConfig.properties 文件或其所在包直接放入ClassPath中吧,提升其在ClassLoader中的级别。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧