2014-09-06 2 views
0

테이블에서 데이터를 가져 오려고합니다. 다음 코드를 사용하여 db에서 데이터를 가져옵니다.java.lang.NoClassDefFoundError : 클래스 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) 

+0

실행이 분명히 클래스 HibernateUtil –

+0

을 찾을 수 없다고 말하면서 선택 쿼리를 수행 할 때 트랜잭션 커밋 작업이 필요한 이유가 무엇입니까? ? –

답변

0

이 의미 중 하나 Y 클래스 경로에 Hibernate 라이브러리가 모두 없거나, 작성한 클래스를 포함하고 있지 않다. Eclipse를 사용하여 코딩하는 경우, 프로젝트 설정을 찾아 Hibernate 라이브러리를 프로젝트의 종속 항목으로 추가하십시오.

hibernate-core을 추가해야하지만 나머지는 너무 많이 사용해야합니다.

메이븐 도움이 될

... 그리고 당신이 당신의 HibernateUtil 클래스의 이름을 변경 한 경우 그것은 당신에게 많은 도움이 될 것이다 : 같은 이름의 표준 최대 절전 모드 클래스가 있습니다. 원칙적으로 이름이 같지만 패키지가 다른 두 개의 클래스를 가질 수 있지만 혼란을 야기 할 수 있습니다. (예를 들어 찾을 수없는 것이 무엇인지 전혀 알지 못합니다.)

관련 문제