Hibernate报错java.lang.ExceptionInInitializerError的处理方法

本文记录了在使用Hibernate 3.3.2进行项目搭建过程中遇到的java.lang.ExceptionInInitializerError错误,并分享了解决该问题的具体步骤。

学习搭建Hibernate开发时,报错java.lang.ExceptionInInitializerError。


具体情况:项目使用的相关文件 :hibernate-distribution-3.3.2.GA      hibernate-annotations-3.4.0.GA       slf4j-1.5.8 

我使用的Hibernate文件可以从这里下载    http://pan.baidu.com/share/link?shareid=121558&uk=4077895710

  slf4j 1.5.8     http://pan.baidu.com/share/link?shareid=121561&uk=4077895710


步骤如下:

   1、新建Java Project ,

         导入 hibernate-distribution-3.3.2.GA下的 hibernate3.jar 以及 /lib/required  下所有的 jar,如下 :

                   antlr-2.7.6.jar  commons-collections-3.1.jar  dom4j-1.6.1.jar   

                  javassist-3.9.0.GA.jar     jta-1.1.jar   slf4j-api-1.5.8.jar   

   2、再倒入slf4j-1.5.8文件里面slf4j的实现包 slf4j-nop-1.5.8.jar 

   3、导入hibernate-annotations-3.4.0.GA下 hibernate-annotations.jar及lib下

                ejb3-persistence.jar和 hibernate-commons-annotations.jar

   4、导入mysql驱动 4、mysql-connector-java-5.1.7-bin.jar


 当时为了将Hibernate所有的依赖的jar放在一起,我的导入方式如下:

      windows -> Preferences ->Java  ->Build Path ->User Libraries -> New ,写入名称Hibernate3.3,

     同时勾选个下面的“System Library(added to the boot class )path”  ,这是错误的原因。


       

        将新建的这个 User Library加入到项目中。

   



最后项目中的Hibernate共有11个jar文件:


然后按照常规的写了一个POJO类,

代码  :User.java

package com.hibernate;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User implements java.io.Serializable {
	private int id;
	private String name;
	private String passwd;
	
	@Id
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	
}

配置文件 :hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
	<property name="connection.url">jdbc:mysql://localhost:3306/jdbc</property>
	<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
	<property name="connection.username">root</property>
	<property name="connection.password">123</property>
	<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
	<property name="show_sql">true</property>
	<property name="format_sql">true</property>
	<property name="connection.pool_size">1</property>	
	<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
	<property name="current_session_context_class">thread</property>
	
	<mapping class="com.hibernate.User" />

</session-factory>
</hibernate-configuration>

自动建表类 :CreateDB.java

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class CreateDB {
	public static void main(String[] args) {
	
		Configuration cfg = new AnnotationConfiguration().configure();
		SchemaExport sExport = new SchemaExport(cfg);
		
		sExport.create(true, true);  
	}
}

运行报错报错:



查了半天没找到原因,有的说是没有 log4j.properties 这个文件 ,我加入后还是报错。

最后百度老久发现原来是将User Library加入到System Library的原因 ,编辑一下刚才新建的User Library,

System Library(added to the boot class )path 勾掉(不勾选)就神奇的好了,

具体是什么原理我也不知道,哪位大神要是知道,还望不惜赐教 !!



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值