Hibernate配置

时间:2009-07-03 20:43:44

标签: java hibernate configuration persistence

我正在尝试使用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;
    }

}

这是stacktrace:

> 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 个答案:

答案 0 :(得分:1)

“java.lang.NoClassDefFoundError”,表示类加载器找不到org.hibernate.cfg.Configuration表示你遇到了CLASSPATH问题。

  
    

echo $ CLASSPATH     /家庭/巴斯蒂安/信息/ JAVA /休眠/测试/测试/目标/类

  

您还必须将所有Hibernate JAR和依赖项添加到CLASSPATH中。我没有在这个回声中看到它们。