2009-07-03 141 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