温馨提示:您的每一次转载,体现了我写此文的意义!!!烦请您在转载时注明出处http://www.blogjava.net/sxyx2008/谢谢合作!!!

雪山飞鹄

温馨提示:您的每一次转载,体现了我写此文的意义!!!烦请您在转载时注明出处http://www.blogjava.net/sxyx2008/谢谢合作!!!

BlogJava 首页 新随笔 联系 聚合 管理
  215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

温馨提示:
        以下异常仅在Spring3.0.3版本中遇到,其他版本可能也会遇到,读者可作参考。不保证会顺利通过。
        近期在学习Spring3的一些新特性,一般在项目开发中为了方便期间,都是借助myeclipse工具来添加ssh支持,很少手动添jar包。这里想自虐一下,体验一下jar包冲突或找不到类的那种感觉,在此也将在Spring3.0中AOP开发过程中遇到的异常什么的记录出来,可以方便更多人,快速定位错误。

第一个异常
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
有过开发经验的一眼就可以看出,这是缺少commons-logging.jar包,因为spring中使用它来记录日志,而spring3.0.3这个版本中并没有该jar,自行到apache网站下载添加该jar即可

第二个异常
在使用AOP的注解时需要用到aopalliance.jar 、aspectjrt.jar 、aspectjweaver.jar,而此三个jar包并未在spring3.0.3的发布中提供需要开发者自行添加

第三个异常
org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces
从异常信息可以看出是cglib的问题,而我们去检查项目,却发现项目中并未cglib的jar,那么你可能想到的是缺少cglib这个jar包,没错,你的思路是正确的,你具有做javaee开发的思维,添加cglib-2.2.jar即可
第四个异常,这也是开发中每个人都会遇到的一个异常,堪称ssh开发中的经典,如果你是一位技术主管,那么你可以同过此异常去考查一个新人,一看便知,他有没有javaee开发经验。呵呵,废话这么多了,不知道你有没有猜到是什么了。还是我来告诉你吧,那就是经典的asm.jar包冲突,你的答案正确吗?不正确,没关系,你只要记下如何解决就可以了,这个异常保证你在工作中遇到或在面试中问到,那么它的重要性可想而知了。

下面分环境来介绍该jar包冲突的解决方案。

在spring3.0以下的环境中(适应于ssh),若出现该jar包冲突,你需要删除带版本号的那个asm.jar,而保留不带版本号的那个asm.jar即可

在spring3.0的环境中,大家仔细检查的话发现spring也带了一个名为org.springframework.asm-3.0.3.RELEASE.jar的jar包,而在开发中仅仅使用这个jar包还是不够的,你还需要额外的去添加asm.jar,那么这个asm.jar到底是那个版本了?用大腿想想?记得胡叔叔上台的时候提过与时俱进这个词,呵呵,人家是说政治的,我这是说开发的,既然spring是3.0的版本,那么asm.jar这个jar包版本肯定也是3.0以上版本啦,要与时俱进嘛。下载地址http://forge.ow2.org/projects/asm/ 我们会看到一个3.3的版本。
可能见到的异常信息
 java.lang.NoClassDefFoundError: org/objectweb/asm/Type
org.objectweb.asm.ClassVisitor.visit
asm3.3.jar,你值得拥有!

posted on 2010-10-29 09:46 雪山飞鹄 阅读(4932) 评论(3)  编辑  收藏 所属分类: spring

Feedback

# re: Spring3.0.3使用之异常解决 2010-10-29 10:29 @joe
不建议现在的应用立即升级到spring3.0 除非你知道spring3.0的变化明细。  回复  更多评论
  

# re: Spring3.0.3使用之异常解决 2010-10-29 10:38 雪山飞鹄
@@joe
呵呵
被spring3.0的新特性吸引了,确实3.0的spring问题很多,最大的差异就是依赖的jar包没列出来,使用中jar包冲突和找不到类的异常频发,没以前2.X系列的spring好用  回复  更多评论
  

# re: Spring3.0.3使用之异常解决 2011-03-18 15:21 jungle
非常好 谢谢!!
下了个asm3.3.jar就可以了!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: