Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners
at org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:96)
at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:226)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1355)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1826)
at StufentTest.main(StufentTest.java:18)
今天下午运行一个简单的hibernate出现的错误,用的是hibernate-distribution-3.6.0.Final,找不出错误在什么地方,就到网上查。
三种说法:
(1)
在使用Hibernate3的时候,发现程序编译好了,在运行时总是抛出java.lang.NoClassDefFoundError: javax/persistence/EntityListeners异常,经查找是因为缺少ejb3-persistence.jar包。
只需要在类库中加入ejb3-persistence.jar,就不会出现这个异常了。
这里不理解的是Hibernate3, 为什么不把ejb3-persistence.jar直接放到自己需要的类库中,而非让用户自己找,去添加。
(2)版本冲突,解决好像是把包一个个导入。
(3)Hibernate 3.6是需要依靠JPA。所以只要把JPA的包导入就可以了,hibernate-distribution-3.6.0.Final/lib/jpa/hibernate-jpa-2.0-api-1.0.0.Final.jar。
我只用了简单的第三种方法。
--转自