java.lang.NoClassDefFoundError:无法初始化类org.com.hibernate.HibernateUtil

时间:2013-02-19 06:46:11

标签: java hibernate

这是我的hibernate util代码

public class HibernateUtil {

private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory() {
    try {
        // Create the SessionFactory from hibernate.cfg.xml
        return new AnnotationConfiguration().configure().buildSessionFactory();
    } catch (Throwable ex) {
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    return sessionFactory;
}
}

这是我的hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

    <!-- Database connection settings -->
    <property name="connection.driver_class">
        oracle.jdbc.OracleDriver
    </property>
    <property name="connection.url">
        jdbc:oracle:thin:@127.0.0.1:ABC
    </property>
    <property name="connection.username">abc</property>
    <property name="connection.password">***</property>

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">3</property>

    <!-- SQL dialect -->
    <property name="dialect">
        org.hibernate.dialect.Oracle10gDialect
    </property>

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>

    <!-- Disable the second-level cache -->
    <property name="cache.provider_class">
        org.hibernate.cache.NoCacheProvider
    </property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>

    <!-- Drop and re-create the database schema on startup -->
    <property name="hbm2ddl.auto">update</property>

    <mapping class="org.com.tables.User_Details" />
</session-factory>

</hibernate-configuration>

这是错误

java.lang.NoClassDefFoundError: Could not initialize class org.com.hibernate.HibernateUtil
at org.com.graphDoa.GraphDOA.salaryData(GraphDOA.java:14)
at org.com.charts.LineChart.generateSalaryPai(LineChart.java:32)
at com.kogent.action.TestAction.execute(TestAction.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:399)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:262)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:224)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:507)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

任何人都可以帮我找出这个错误是什么,我什么都没有。如果这与图书馆或其他任何东西有关,请建议。我正在使用struts 2 for mvc和hibernate 3 for数据库连接和tomcat 7作为Web服务器。

4 个答案:

答案 0 :(得分:4)

您可以在

下载与hibernate相关的jar

http://sourceforge.net/projects/hibernate/files/hibernate3

解压缩并检查以下文件是否已添加到lib文件夹

Anttr-2.7.6.jar
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
ehcash.jar
dom4j-1.6.1.jar
hibernate3.jar    <--Check this version of your jar
jta.jar
log4j-1.2.3.jar

要运行与hibernate相关的编程,所有的jar hibernate3.jar都是主文件..

除了hibernate jar之外,还必须包含一个与你使用的数据库类型(mysql,oracle等)相关的jar文件。

在执行程序之前尝试使用正确版本的jar ...不支持运行某些版本的jar ...建议使用最新版本的...

答案 1 :(得分:3)

如果有人遇到使用Glassfish服务器的同一问题,您必须执行以下操作,

  1. 转到Glassfish安装路径并在路径glassfish/domains/domain1/lib/

  2. 下添加数据库的jdbc驱动程序
  3. 重新启动Glassfish服务器。

答案 2 :(得分:1)

使用这个jar :::

antlr-2.7.7
commons-collections-3.2.1
dom4j-1.6.1
hibernate-commons-annotations-4.0.1.Final
hibernate-core-4.1.9.Final
hibernate-entitymanager-4.1.9.Final
hibernate-jpa-2.0-api-1.0.1.Final
javassist-3.17.1-GA
jboss-transaction-api_1.1_spec-1.0.0.Final
jboss-logging-3.1.0.GA
sqljdbc4-2.0(as per your database used)

发自:

http://sourceforge.net/projects/hibernate/files/latest/download?source=files

答案 3 :(得分:0)

您没有在HibernateUtil类中提供包名称。如果没有定义包该类将属于默认包,并且您无法从org.com.hibernate.HibernateUtil获取HibernateUtil类