刚接触Servlet,今天将Servlet和Hibernate结合起来往数据库里面保存数据,报了好多异常,总结了几个如下:
1.Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:197)
at com.briup.dao.ConHibernate.<clinit>(ConHibernate.java:8)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
导slf4j-api-1.6.1.jar
2.SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
导slf4j-log4j12-1.6.6.jar
3.java.lang.NoClassDefFoundError: javax/transaction/Synchronization
提示肯定是缺少类文件了。
(1)这样一定是tomcat 环境中没有 javax.transaction.Synchronization类
(2)找 javax.transaction.Synchronization 发现在javaee.jar 中有这个类,这个是建立web project 时选择j2ee 5.0规范产生的。
解决方法:在hibernate 所提供的lib中找到jta.jar 放到你的web project 的web-inf/lib中。其实jta.jar 是javaee.jar的一部分