借鉴: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文件中添加一条记录,但由于使用记事本编辑器,造成加载工具类时报错不能初始化。

java.lang.NoClassDefFoundError: Could not initialize class异常处理的更多相关文章

  1. Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法

    最近从 Op 那里报来一个问题,说是SFTP上传文件不成功.拿到的 Exception 如下: Caused by: java.lang.NoClassDefFoundError: Could not ...

  2. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties

    参考文章: 使用Log4jdbc-log4j2监听MyBatis中运行的SQL和Connection 使用 log4jdbc格式化输出SQL,maven配置如下: <dependency> ...

  3. java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils

    页面报错: root: java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils 出错 ...

  4. 异常-----java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.core.KeyFactory

    SSH 类库问题 java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer2009- ...

  5. hibernate 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.xxx 这类的问题

    <!-- 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.intern ...

  6. java.lang.NoClassDefFoundError: Could not initialize class xxx 原因

    一.问题及原因 程序里有个工具类,主要是调用它的静态方法来发送mq. 调用场景如下: 结果这两天报了个错: java.lang.NoClassDefFoundError: Could not init ...

  7. java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

    最近在进行利用jfreechart生成图表时发现,项目在本地运行的好好的,一部署到服务器(linux系统)上就不行,报这样的错误: java.lang.NoClassDefFoundError: Co ...

  8. exception java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment

      exception java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironmen ...

  9. 日志异常:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder

    今天启动开发的项目,碰到了一个日志上的bug:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.Sta ...

随机推荐

  1. Thinkphp3.23 连接MSSQL方法

    Thinkphp 3.23要连接MSSQL,必须配置下,以下是主要的步骤. 1.要安装Microsoft Drivers for PHP for SQL Server驱动 下载驱动以前,要查看一下ph ...

  2. 请大家帮我找一找bug —— 一个MySQL解析程序(JAVA实现)

    周末两天我写了一个MySQLParser.写这个东西的目的是:公司的一个项目中需要对数据打版本号(每个表的每条记录要有一个版本号字段,这个字段需要由框架自动打上去,而不是由程序员来做). 所以,我写的 ...

  3. ASP.Net TextBox只读时不能通过后台赋值取值

    给页面的TextBox设置ReadOnly="True"时,在后台代码中不能赋值取值,下边几种方法可以避免: 1.不设置ReadOnly,设置onfocus=this.blur() ...

  4. DBUtils使用技巧

    BbUtils(一) 结果集概览:http://www.cnblogs.com/myit/p/4269165.html DbUtils(二) 结果集实例:http://www.cnblogs.com/ ...

  5. JavaScript回文数

    基本解决方案 function palindrome(str) { return str.replace(/[\W_]/g, '').toLowerCase() === str.replace(/[\ ...

  6. Ryubook_1_switch_hub_源码

    一.switching hub by openflow: 用Ryu实现一个有如下功能的switching hub. • Learns the MAC address of the host conne ...

  7. JavaSE-09 继承

    学习要点 继承的优点和实现 子类重写父类方法 继承下构造方法的执行过程 抽象类和抽象方法的使用 final修饰属性.方法和类 继承的优点和实现 宠物管理系统优化设计 宠物管理系统中的类有什么问题? 使 ...

  8. 子例程 subroutine

    #! /usr/bin/perluse strict;use warnings;print "\n---------summation_STDIN_parameter----------\n ...

  9. router-link的使用方法

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. Python之面向对象继承和派生

    Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...