这是我的第一个Hibernate实践,我得到了以下错误
java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter
我将jar文件添加到项目库,但错误仍然存在。我正在使用Eclipse。
我如何解决这个问题,这与我的代码有关吗?或关于Eclipse中的设置?
这是我的hibernate示例
错误
Caused by: java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter
at org.hibernate.bytecode.cglib.BytecodeProviderImpl.getProxyFactoryFactory(BytecodeProviderImpl.java:33)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactoryInternal(PojoEntityTuplizer.java:182)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:160)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135)
at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:269)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:425)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1218)
at com.hib.anoop.ManageEmployee.main(ManageEmployee.java:20)
Caused by: java.lang.ClassNotFoundException: net.sf.cglib.proxy.CallbackFilter
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)
... 13 more
我添加了正确的jar,问题解决了,但是出现了新问题
Caused by: java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class
我该如何解决这个问题?
答案 0 :(得分:2)
问题解决了,问题与jar文件cglib
和asm
的版本有关。
现在,我用cglib 2.2.2
和asm 3.3.1
现在,Mismatch已解决并获得输出。
答案 1 :(得分:1)
答案 2 :(得分:0)
你的类路径需要cgLib,如果你使用的是maven,可以从这里下载:
http://mvnrepository.com/artifact/org.hibernate/hibernate-cglib-repack/2.1_3。
这个类被hibernate用来创建与其他实体的惰性关系的代理对象,你可以在这里阅读更多相关内容:
http://java-success.blogspot.com/2012/09/understanding-hibernate-proxy-objects.html
答案 3 :(得分:0)
添加maven依赖项后问题已解决:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
</dependency>