2009-07-03 197 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處理的,所以我想這是正確的。
  • Hibernate找不到配置文件?
  • 類路徑問題?

我從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 

我試圖尋找到提供與Hibernate的實例教程,但Maven可以把它們編成;它抱怨丟失的文物。

順便說一下,Maven只讓我使用Hibernate 3.3.1。是否可以使用3.3.2,並讓Maven處理安裝?

回答

1

「java.lang.NoClassDefFoundError」,表示類加載器找不到org.hibernate.cfg.Configuration,說你遇到了CLASSPATH問題。

回聲$ CLASSPATH /家庭/巴斯蒂安/信息/ JAVA /休眠/測試/測試/目標/班

你要添加的所有的Hibernate JAR和依賴關係進入CLASSPATH。我在這個回聲裏看不到他們。

+0

Duh,我在想Maven是自動處理的。有沒有簡單的方法來實現這一點? – 2009-07-03 20:57:53