2009-07-03 3 views
1

나는 Hibernate를 시작하려고하는데, 프로그램을 실행할 때 초기화 과정에서 에러가 발생한다. 예외는,이 클래스에 의해 슬로우 복사 here에서있다 : 여기 최대 절전 모드 설정

package net.always_data.bastien_leonard; 

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class HibernateUtil { 

    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     try { 
      // Create the SessionFactory from hibernate.cfg.xml 
      return new Configuration().configure().buildSessionFactory(); 
     } 
     catch (Throwable ex) { 
      // Make sure you log the exception, as it might be swallowed 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

} 

이 스택 트레이스입니다 :

> java net/always_data/bastien_leonard/Main 
Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at net.always_data.bastien_leonard.HibernateUtil.buildSessionFactory(HibernateUtil.java:18) 
    at net.always_data.bastien_leonard.HibernateUtil.<clinit>(HibernateUtil.java:8) 
    at net.always_data.bastien_leonard.Main.main(Main.java:17) 
Caused by: java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration 
    at net.always_data.bastien_leonard.HibernateUtil.buildSessionFactory(HibernateUtil.java:13) 
    ... 2 more 
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) 
    ... 3 more 

문제가 어디에서 오는지 모르겠어요, 그래서 나는 정말 모른다 볼 위치 :

  • 설치 문제? 이것은 메이븐 (Maven)에 의해 처리되었으므로 정확하다고 생각합니다.
  • 하이버 네이트가 설정 파일을 찾을 수 없습니까?
  • classpath 문제가 있습니까?

내 hibernate.cfg.xml 파일이 들어있는 클래스 경로의 루트에서 프로그램을 호출하고 있습니다. 여기 는 실제로 같은 모습입니다 :

> pwd 
/home/bastien/info/java/hibernate/test/Test/target/classes 
> echo $CLASSPATH 
/home/bastien/info/java/hibernate/test/Test/target/classes 
> ls -F 
hibernate.cfg.xml net/ 
> ls -FR 
.: 
hibernate.cfg.xml net/ 

./net: 
always_data/ 

./net/always_data: 
bastien_leonard/ 

./net/always_data/bastien_leonard: 
Event.class Event.hbm.xml HibernateUtil.class Main.class 

내가 최대 절전 모드와 함께 제공되는 튜토리얼 예제를 조사하려고했지만, 메이븐을 컴파일 할 수 없습니다; 누락 된 유물에 대해 불평합니다.

그건 그렇고, Maven은 오직 Hibernate 3.3.1만을 사용할 수 있습니다. 3.3.2를 사용하고 Maven이 설치를 처리하도록 할 수 있습니까?

답변

1

"java.lang.NoClassDefFoundError", 클래스 로더가 org.hibernate.cfg를 찾을 수 없음을 나타냅니다. 구성에 CLASSPATH 문제가 있음을 나타냅니다.

에코 $의 CLASSPATH /홈/bastien/정보/자바/최대 절전 모드는/테스트/테스트/대상/클래스

당신은 모든 최대 절전 모드 항아리와 종속성을 추가 할 수있어 뿐만 아니라 CLASSPATH로. 나는이 에코에서 그들을 보지 못한다.

+0

나는 Maven이 자동으로 처리했다고 생각했다. 이 작업을 자동화하는 쉬운 방법이 있습니까? –

+1

Maven에게 CLASSPATH에서의 의존성을 원한다고 말하십시오 : http://maven.apache.org/shared/maven-archiver/examples/classpath.html – duffymo

+0

고마워요. 이제는 모든 종속 항아리를 항아리와 동일한 디렉토리에 넣으려고합니다. 그러나 Maven에서 다운로드 한 모든 slf4j 항아리를 현재 디렉토리에 넣었지만 항상 org/slf4j/impl/StaticLoggerBinder와 NoClassDefFoundError를 가지고 있습니다. 어떤 생각? –