CGLIB Enhancement failed 解决方法

        今天做ssh项目时碰到报这个错:

org.hibernate.HibernateException: CGLIB Enhancement failed: com.medicom.lcsy.model.EvoaPijian
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:102)
   at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:49)
   at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:379)

     ...........

     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Thread.java:799)

在网上查了一下,有一个方法可以,解决问题:
错误代码:org.hibernate.HibernateException: CGLIB Enhancement failed: <classname>

答:Hibernate 3的默认方式是把所有类通过代理方式来进行延迟加载。如果代码中的类有一个私有无参的构造器的话,Hibernate将无法在运行时将项目代码中的类作为子类装载。为了避免这个错误,类中的构造器函数至少应该在包内可见。

 

在一对多的类里写了一个默认构造函数,要public的,重新运行,ok,问题解决了。

 

还有其他的一些解决方法,多是从jar包入手,这里罗列,以备查询。

 

1. 之前遇到过类似问题.需要升级cglib-2.1.jar到2.2

2.

2006年11月05日 16:17:29
Spring Hibernate在AOP方面的配置冲突解决之道

环境:Spring2.0 Hibernate3.1.x/Hibernate3.2

在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar

Hibernate使用如果lib:
asm.jar
asm-attrs.jar


其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。


解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar

2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar

昨晚试一试了,按照文章里做了,还是不行。和黑哥聊天的时候,还说起Java方面厂商太多,好麻烦。支持Microsoft的黑哥,又说,“没有统一的标准”。我也有点小感叹,毕竟有时候就会出一些莫名其妙的问题,虽然最终有人帮忙解决,但的确浪费了很多时间。不过,Java还是有标准的!

今天早上查了下,才反应过来,项目已经发布,就应该去Tomcat的项目文件夹里的lib下看看,果然,那3个lib还在。删除之,运行成功。
帖子链接:http://chenwenshun-gmail-com.iteye.com/blog/1174223

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值