Java 冬眠';s会话异常
我是海比尔内特的新手。尝试执行示例代码Java 冬眠';s会话异常,java,hibernate,Java,Hibernate,我是海比尔内特的新手。尝试执行示例代码 public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Create the SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); } catch
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (HibernateException ex) {
throw new RuntimeException("Configuration problem: " + ex.getMessage(), ex);
}
}
public static final ThreadLocal session = new ThreadLocal();
public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null)
s.close();
}
}
public class javism_jaxb_xml_to_object {
public static void main(String[] args) throws JAXBException
{
Session session = HibernateUtil.currentSession();
Transaction tx = null;
tx = session.beginTransaction();
javism_jaxb cust = new javism_jaxb();
cust.setName("Vasay");
cust.setId(1);
cust.setAge(34);
session.save(cust);
tx.commit();
}
}
但是得到豁免
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:111)
at test.HibernateUtil.<clinit>(HibernateUtil.java:16)
at test.javism_jaxb_xml_to_object.main(javism_jaxb_xml_to_object.java:25)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 3 more
线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/commons/logging/LogFactory
位于org.hibernate.cfg.Configuration(Configuration.java:111)
在test.HibernateUtil.(HibernateUtil.java:16)
在test.javism_jaxb_xml_to_object.main(javism_jaxb_xml_to_object.java:25)
原因:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory
位于java.net.URLClassLoader$1.run(URLClassLoader.java:202)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:190)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:307)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 3个以上
我做错了什么
更新
在类路径中添加commons-logging-1.1.1.jar之后。将hibernate3.jar从3.0.3刷新到3.5,我得到了另一个版本
Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentException
at test.HibernateUtil.<clinit>(HibernateUtil.java:16)
at test.javism_jaxb_xml_to_object.main(javism_jaxb_xml_to_object.java:25)
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 2 more
线程“main”java.lang.NoClassDefFoundError中的异常:org/dom4j/DocumentException
在test.HibernateUtil.(HibernateUtil.java:16)
在test.javism_jaxb_xml_to_object.main(javism_jaxb_xml_to_object.java:25)
原因:java.lang.ClassNotFoundException:org.dom4j.DocumentException
位于java.net.URLClassLoader$1.run(URLClassLoader.java:202)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:190)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:307)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 还有两个
但是如果我使用hibernate3.jar版本3.0.3,我会得到这个
15.08.2012 11:01:30 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.0.3
15.08.2012 11:01:30 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
15.08.2012 11:01:30 org.hibernate.cfg.Environment <clinit>
INFO: using CGLIB reflection optimizer
15.08.2012 11:01:30 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
15.08.2012 11:01:30 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
15.08.2012 11:01:30 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
15.08.2012 11:01:30 org.hibernate.cfg.Environment
信息:Hibernate 3.0.3
15.08.2012 11:01:30 org.hibernate.cfg.Environment
信息:找不到hibernate.properties
15.08.2012 11:01:30 org.hibernate.cfg.Environment
信息:使用CGLIB反射优化器
15.08.2012 11:01:30 org.hibernate.cfg.Environment
信息:使用JDK1.4java.sql.Timestamp处理
15.08.2012 11:01:30 org.hibernate.cfg.Configuration配置
信息:从资源配置:/hibernate.cfg.xml
15.08.2012 11:01:30 org.hibernate.cfg.Configuration getConfigurationInputStream
信息:配置资源:/hibernate.cfg.xml
如果您有apachecommons日志jar,则需要在类路径中添加它。否则,从下载它并将其添加到项目中,然后将其添加到项目的classpth中
更新
下载dom4j库并将其添加到类路径中
更新2
信息:Hibernate 3.0.3-->显示您正在使用的Hibernate版本的信息日志
信息:hibernate.properties未找到-->显示hibernate.properties
未找到的信息日志。这是提供hibernate属性的另一种方法,您可以在hibernate.cfg.xml
中提供这些属性
有关更多信息,请检查,如果有,您需要在类路径中添加apache commons日志jar。否则,从下载它并将其添加到项目中,然后将其添加到项目的classpth中 更新 下载dom4j库并将其添加到类路径中 更新2 信息:Hibernate 3.0.3-->显示您正在使用的Hibernate版本的信息日志 信息:hibernate.properties未找到-->显示
hibernate.properties
未找到的信息日志。这是提供hibernate属性的另一种方法,您可以在hibernate.cfg.xml
中提供这些属性
有关更多信息,请检查如果您只是制作一个用于尝试hibernate的示例项目,那么Nandkumar的建议是可以的,只需继续添加在
NoClassDefFoundError
中报告的类的JAR即可
这个过程非常繁琐,理想情况下,您应该使用像maven这样的依赖关系管理工具,它可以解决Hibernate(或任何其他类似框架)的所有依赖关系。此线程可以帮助您设置maven以使用hibernate。它还将帮助您跨hibernate版本移动
如果您只是制作一个用于尝试hibernate的示例项目,那么Nandkumar的建议是可以的,只需继续添加
NoClassDefFoundError
中报告的类的JAR即可
这个过程非常繁琐,理想情况下,您应该使用像maven这样的依赖关系管理工具,它可以解决Hibernate(或任何其他类似框架)的所有依赖关系。此线程可以帮助您设置maven以使用hibernate。它还将帮助您跨hibernate版本移动
@KliverMax:总是乐于助人:)对不起,这帮不了忙。我还有一个例外。请看UPDATENow关于增加百万图书馆的路径。我希望它能很快结束。RRRRRRR stakoverflow没有给我编辑问题,所以我把新问题放在这里。新的exeption。
原因:java.lang.IllegalStateException:org.slf4j.LoggerFactory无法成功初始化。另见http://www.slf4j.org/codes.html#unsuccessfulInit
。也许你可以在任何地方上传hibernate工作所需的所有库?我将版本从3.0.3改为3.5。但我不能编辑这个问题(@KliverMax:总是很乐意帮忙:)很抱歉,这没有帮助。我得到了另一个验证。请查看UPDATENow在添加百万库的路径上。我希望它很快结束。RRRRRRR stakoverflow没有给我编辑问题,所以我在这里提出了新问题。新的验证。原因:java.lang.IllegalStateException:org.slf4j.LoggerFactory无法成功初始化。另请参阅http://www.slf4j.org/codes.html#unsuccessfulInit
。也许你可以在任何地方上传hibernate工作所需的所有库?我将版本从3.0.3更改为3.5。但我无法编辑问题((