java.lang.NoClassDefFoundError: Could not initialize class异常处理
借鉴: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();
}
}
不能初始化,也就是类在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异常处理的更多相关文章
- Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法
最近从 Op 那里报来一个问题,说是SFTP上传文件不成功.拿到的 Exception 如下: Caused by: java.lang.NoClassDefFoundError: Could not ...
- 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
参考文章: 使用Log4jdbc-log4j2监听MyBatis中运行的SQL和Connection 使用 log4jdbc格式化输出SQL,maven配置如下: <dependency> ...
- 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 出错 ...
- 异常-----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- ...
- 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 ...
- java.lang.NoClassDefFoundError: Could not initialize class xxx 原因
一.问题及原因 程序里有个工具类,主要是调用它的静态方法来发送mq. 调用场景如下: 结果这两天报了个错: java.lang.NoClassDefFoundError: Could not init ...
- java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart
最近在进行利用jfreechart生成图表时发现,项目在本地运行的好好的,一部署到服务器(linux系统)上就不行,报这样的错误: java.lang.NoClassDefFoundError: Co ...
- exception java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
exception java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironmen ...
- 日志异常:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder
今天启动开发的项目,碰到了一个日志上的bug:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.Sta ...
随机推荐
- VM virtualBox网络地址设置
目的:在虚拟机LINUX中,可用通过主机访问到虚机内容. 问题描述,在虚机系统中,ip地址一直为127.0.0.1,无法在主机中建立连接 参考文章:https://cnzhx.net/blog/vir ...
- LigerUI用Post\Get\Ajax前后台交互方式的写法
parms 参数统一 json格式的数据 url 访问后台的url 设置同步参数 [javascript] view plain copy $.ajaxSetup({ async : false} ...
- HTML5——动画延迟的另外一种方式
https://www.cnblogs.com/hhhhhh/p/5758167.html
- 【PostgreSQL-9.6.3】启动,登录,退出,关闭
当我们费尽千辛万苦安装完数据库后,一定会迫不及待的想使用它.骚年,不要着急,且看我为您解析PostgreSQL的启动,登录,退出,关闭过程. 一 启动数据库服务器 1. 没有设置环境变量的情况下 po ...
- java web 学习笔记 - servlet03
1.Servlet可以分为三种类型 普通Servlet,需要在基本程序架构中体现. Servlet过滤器,在web容器启动时初始化,不需要手动调用. Servlet 监听器. 2. Servlet过 ...
- (转)淘淘商城系列——发布dubbo服务
http://blog.csdn.net/yerenyuan_pku/article/details/72758639 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入, ...
- git 控制操作
克隆文件 git clone https://gitee.com/xxxxx/xxxxx.git 克隆分支文件 git clone -b 分支名 https://gitee.com/xxxxx/xxx ...
- Jmeter中之各种乱码问题解决方案
一.Jmeter中之请求乱码问题 如果你参数化的数据是中文,那么应该怎么解决这个问题呢? 1.在脚本的参数接设置数据的接收编码为UTF-8,如下图,这里只保证请求参数的不乱码. 2.从本地txt文件中 ...
- day21-3 类的组合
目录 类的组合 组合的应用 类的组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象 组合的好处:解决类与类之间代码冗余的问题 组合的应用 需求:假如我们需要给学生增添课程属性, ...
- STL:set的使用
关于set set是以特定的顺序存储相异元素的容器. set是关联式容器,C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树 ...