簡體   English   中英

java.lang.NoClassDefFoundError:無法初始化類business.HibernateUtil

[英]java.lang.NoClassDefFoundError: Could not initialize class business.HibernateUtil

我正在嘗試從表中獲取數據,我正在使用以下代碼從數據庫中獲取數據。

public List<UserInfoSetting> fetchAll(Long aid) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = session.beginTransaction();
        List<UserInfoSetting> obj = null;
        try {
            String hql = "select s from UserInfoSetting s where s.atom.id=:aid ";
            Query query = session.createQuery(hql);
            query.setParameter("aid", aid);
            obj = query.list();
            tx.commit();

        } catch (HibernateException e) {
             if (tx != null) {
                tx.rollback();
            }
        } finally {
            session.close();
        }
        return obj;
    }

HibernateUtil.java

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
              sessionFactory = 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;
    }
}

它顯示以下異常

根本原因

java.lang.NoClassDefFoundError: Could not initialize class business.HibernateUtil
    setting.user.UserCommunicationDao.fetchAll(UserCommunicationDao.java:146)
    setting.user.UserCommunication.fetchAll(UserCommunication.java:64)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:483)

如何解決以上問題

這意味着要么您的類路徑中沒有所有正確的Hibernate庫,要么不包括您編寫的類。 如果您使用Eclipse進行編碼,請找到項目設置並將Hibernate庫添加為項目的依賴項。

您將需要添加hibernate-core ,但也需要添加許多其他內容。

Maven會幫助...

如果您更改HibernateUtil類的名稱,這將對您有很大幫助:存在一個具有相同名稱的標准Hibernate類。 盡管原則上可以有兩個具有相同名稱的類,但使用不同的包,但這可能會引起混淆。 (例如,尚不清楚它找不到哪一個。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM