日期:2014-05-18  浏览次数:20858 次

java.lang.NoClassDefFoundError: org/hibernate/cfg/AnnotationConfiguration
大家好,我刚接触hibernate。一开始没有在web环境下,一切正常。但是当在web环境下使用时,总遇到java.lang.NoClassDefFoundError: org/hibernate/cfg/AnnotationConfiguration。

我在web.xml中添加了:
<listener>
        <listener-class>com.mypackage.configuration.HibernateListener</listener-class>
    </listener>
其中,com.mypackage.configuration.HibernateListener为:
package com.mypackage.configuration;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 * @author  This class garanties that only one single SessionFactory
 *         is instanciated and that the configuration is done thread safe as
 *         singleton. Actually it only wraps the Hibernate SessionFactory.
 *         You are free to use any kind of JTA or Thread transactionFactories.
 */
public class HibernateSessionFactoryUtil {

/** The single instance of hibernate SessionFactory */
private static org.hibernate.SessionFactory sessionFactory;

/**
 * disable contructor to guaranty a single instance
 */
private HibernateSessionFactoryUtil() {
}

static{
// Annotation and XML
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
// XML only
//    sessionFactory = new Configuration().configure().buildSessionFactory();
}

public static SessionFactory getInstance() {
return sessionFactory;
}

/**
 * Opens a session and will not bind it to a session context
 * @return the session
 */
public Session openSession() {
return sessionFactory.openSession();
}

/**
 * Returns a session from the session context. If there is no session in the context it opens a session,
 * stores it in the context and returns it.
 * This factory is intended to be used with a hibernate.cfg.xml
 * including the following property <property
 * name="current_session_context_class">thread</property> This would return
 * the current open session or if this does not exist, will create a new
 * session
 * 
 * @return the session
 */
public Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}

/**
 * closes the session factory
 */
public&nb