java 休眠配置
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1080766/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Hibernate configuration
提问by Bastien Léonard
I'm trying to get started with Hibernate, and when executing my program I get an error during initialization. The exception is thrown by this class, copied from here:
我正在尝试开始使用 Hibernate,并且在执行我的程序时在初始化过程中出现错误。此类抛出异常,从此处复制:
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;
}
}
Here is the 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.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
I don't know where the problem comes from, so I don't really know where to look:
我不知道问题出在哪里,所以我真的不知道从哪里看:
- Problem of installation? This was handled by Maven, so I guess it's correct.
- Hibernate can't find the configuration file?
- Problem of classpath?
- 安装问题?这是由Maven处理的,所以我想这是正确的。
- Hibernate 找不到配置文件?
- 类路径的问题?
I'm invoking the program from the root of the classpath, which contains my hibernate.cfg.xml file. Here is how it looks like in practice:
我正在从包含我的 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
I've tried looking into the tutorial examples provided with Hibernate, but Maven can't compile them; it complains about missing artifacts.
我尝试查看 Hibernate 提供的教程示例,但 Maven 无法编译它们;它抱怨缺少工件。
By the way, Maven only lets me use Hibernate 3.3.1. Is it possible to use 3.3.2 and still let Maven handle the installation?
顺便说一下,Maven 只让我使用 Hibernate 3.3.1。是否可以使用 3.3.2 并且仍然让 Maven 处理安装?
采纳答案by duffymo
"java.lang.NoClassDefFoundError", indicating that the class loader can't find org.hibernate.cfg.Configuration says you've got a CLASSPATH problem.
“java.lang.NoClassDefFoundError”,说明类加载器找不到 org.hibernate.cfg.Configuration 说你有一个CLASSPATH问题。
echo $CLASSPATH /home/bastien/info/java/hibernate/test/Test/target/classes
echo $CLASSPATH /home/bastien/info/java/hibernate/test/Test/target/classes
You've got to add all the Hibernate JARs and dependencies into the CLASSPATH as well. I don't see them in this echo.
您还必须将所有 Hibernate JAR 和依赖项添加到 CLASSPATH 中。我没有在这个回声中看到它们。

