借鉴:http://blog.csdn.net/sleepdancer/article/details/9207425
static {
InputStream in = XXX.class.getResourceAsStream("/conf/abc.properties");
try {
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
}
应用程序跑的时候,突然报出来Caused by: Java.lang.NoClassDefFoundError: Could not initialize class com.xxx.xxx.XXX错误,当时第一反应就是.NoClassDefFoundError,肯定是类找不到了。于是赶紧看看代码,发现使用类的调用处没有任何的编译错误,这样的话就很迷惑了,为什么会NoClassDefFoundError错误呢。重新编译检查了一遍之后,还是报出来同样的错误,于是后面的错误信息引起了注意【Could not initialize】。

不能初始化,也就是类在new的时候出现了问题,于是仔细检查了一下不能初始化的类,发现是个静态工具类,根本就没有什么构造函数,那么没有构造函数何来的初始化异常?于是仔细的检查了一下代码之后,发现异常可能出现在这个地方了。

关键就在第一行的 InputStream in = XXX.class.getResourceAsStream("/conf/abc.properties");,如果没有abc.properties的话,肯定会出现异常,这样的话就会造成了初始化错误。当然比较奇怪的时候,既然try了,为什么不把第一行的代码也放到try里面,这样的话,即使有错误,也会能够顺利的进行初始化操作。

后来博主应该发现是properties文件未能找到,那么Javaweb里面如何找到也是个问题,下面是解决办法,用classLoader来解决:

//private static FileInputStreamfis=null;

private static InputStream is=null;

pp=new Properties();

try {

//此句会找不到,有java.io.FileNotFoundException:

//fis=newFileInputStream("XXX.properties"); // 一般情况下默认读取为tomcat目录

//当我们使用javaweb的时候,读取文件要使用类加载器[因为类加载器去读取资源的时候,默认的主目录是src]

is=SQLHelper.class.getClassLoader().getResourceAsStream("com/demo/util/XXX.properties");

pp.load(is);

dbDriver=pp.getProperty("dbDriver");

url=pp.getProperty("url");

username=pp.getProperty("username");

password=pp.getProperty("password");

      } catch (IOException e) {
e.printStackTrace();
} 注意:在Linux下用部分编辑器编辑文件有可能造成Java程序解析出错。如在web控制台项目中,一次在param.properties文件中添加一条记录,但由于使用记事本编辑器,造成加载工具类时报错不能初始化。

最新文章

  1. a biped was detected but cannot be configured properly (Bipe导入Unity 无法正确识别)
  2. python coroutine测试
  3. 【转载】C/C++ 函数指针 总结
  4. IOS之【属性列表】
  5. Codeforces Round #270(利用prim算法)
  6. Python之旅_计算机基础入门
  7. 企业移动应用和Smobiler
  8. localStorage sessionStorage cookie indexedDB
  9. java SPI机制
  10. 如何使用 Lucene 做网站高亮搜索功能?
  11. python3 Django集成Ueditor富文本编辑器
  12. Apache-Flink深度解析-概述
  13. THE DEFINITIVE GUIDE TO DEBUGGING JAVASCRIPT
  14. Unity3D笔记 英保通六 角色控制器
  15. Python2 和Python3 的差异总结
  16. CentOS7LINUX 内核调试符号安装
  17. 自定义MVC视图引擎ViewEngine 创建Model的专属视图
  18. Oracle基础查询
  19. python urllib使用
  20. tornado ThreadPoolExecutor

热门文章

  1. rest_framework基于generics.CreateAPIView创建用户
  2. IDEA安装使用
  3. php查询快递信息
  4. 迅为iTOP-4418嵌入式开发板初体验
  5. Leetcode_638.Shopping Offers
  6. sh NonUniqueObjectException
  7. tar (child): lbzip2: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now
  8. CAD使用GetxDataLong读数据(com接口)
  9. WebDAV协议
  10. 01XML文档结构