希望你能帮忙解决这个问题。我使用Spring @Transactional
注释来标记事务方法,并且我有必要的<tx:annotation-driven transaction-manager="txManager"/>
。我在我的构建中包含Spring 2.5.6和cglib 2.1_3。
在部署(到Websphere 7运行时)时,我看到了bean创建异常,其根本原因是:
Caused by: java.lang.AbstractMethodError: net/sf/cglib/core/ClassGenerator.generateClass(Lnet/sf/cglib/asm/ClassVisitor;)V
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
...and so on
我认为这意味着我们在generateClass(...)
的实例上调用AbstractClassGenerator
方法,该方法没有实现该方法。因为所有这些东西似乎都是在Spring中透明地设置的,所以我不知道从哪里可以解决这个问题,但是......有什么想法吗?
答案 0 :(得分:0)
我猜你有多个cglib副本。您的应用服务器是否拥有自己的副本?如果是这样,你最好不要把它也包含在你的应用程序中。
另一种可能性是你错过了asm.jar
,虽然在这种情况下错误可能会有所不同。
答案 1 :(得分:0)
正如Skaffman建议检查是否有重复的cglib副本。我没有WAS 7,但我看了我的WPS 7,它建立在WAS 7之上,并注意到有一个JAR - cglib-nodep-2.1_3.jar是SCA功能包的一部分
您的计算机上是否有SCA功能包,并查看该文件是否存在。
我会打开类加载跟踪,看看这个类是从这个类中拾取的,并在其上做一个cavaj,看看它支持的方法是什么。
当你说具体的子类似乎解决了这个问题时,它也胜过我了!如上所述,我首先会找到在运行时加载这些类的Jar,然后找出发生了什么。
HTH Manglu