1、报错信息:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
大概看一下错误信息:BeanFactory没有实例化或者已经关闭,原因很简单:ApplicationContext ctx = new ClassPathXmlApplicationContext();Spring实例化
BeanFactory的时候是默认到classPath下面查找名为applicationContext.xml的文件。但是这正是这个错误的原因:ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");如果这样的话就不会出现这样的错误了。
2、java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
导入一个jta.jar
3、org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/HibernateSessionFactory.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider
原先:<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
改成:<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
问题解决,发现可以正常使用了
4、java.lang.NoClassDefFoundError: org/jboss/logging/BasicLogger
缺少一个jar包
jboss-logging.jar
http://mvnrepository.com/artifact/org.jboss.logging/jboss-logging/3.1.0.CR1
5、java.lang.NoClassDefFoundError: javax/persistence/Entity
java.lang.NoClassDefFoundError: javax/persistence/AttributeConverter
1) 在使用Hibernate3的时候,发现程序编译好了,在运行时总是抛出java.lang.NoClassDefFoundError: javax/persistence/EntityListeners异常,经查找是因为缺少ejb3-persistence.jar包。
只需要在类库中加入ejb3-persistence.jar,就不会出现这个异常了。
这里不理解的是Hibernate3, 为什么不把ejb3-persistence.jar直接放到自己需要的类库中,而非让用户自己找,去添加。
附件是ejb3-persistence.jar
如果需要完整的Hibernate3的相关jar包,请到
http://javapub.iteye.com/blog/867943下载
2)Hibernate需要jpa支持,导入jpa的jar包(hibernate-jpa-2.0-api-1.0.1.Final.jar)即可。