ssh框架整合-NoClassDefFoundError-NoSuchMethodError-遁地龙卷风

时间:2023-12-01 21:25:20

(-1)写在前面

spring2.0、struts1.2、hibernate3.0、myeclipse8.5、tomcat6.0,整合之中出现了很多问题,前几天忙着整理毕业论文的资料,时间腾出来了,总算有能写的东西。话说这宿舍的人少了,蚊子的选择也少了。

(0)详细解释

a.错误产生的原因

java.lang.NoSuchMethodError、 java.lang.NoClassDefFoundError,类似于这种类型的错误是因为框架间jar包冲突了。

b.解决方式

已java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit为例,是因为spring2.0和hibernate3.0都有asm这个jar包。

第一种:区发布项目的tomcat根目录下,进入webapps,进入你的项目,WEN-INF->lib下,找到asm.jar删掉即可。第一次发布项目后,以后的项目发布时不会跟新lib里的jar包

第二种:关闭服务器,去tomcat跟目录下的webapps里删除你的项目(否则即便执行后续的行为,再次发布项目lib里的jar包也不会更新),

如果 你的jar包在myeclipse中放在WEB-INF\lib下,找到后删除就好(我用的是build path,不是自己导的包,可能在spring 2.0 AOP libraries里),

如果你是用buildpath方式引用的jar包,点击myeclipse的Windows,点击preference,左边依次点击MyEclipse->ProjectCapabilities->Spring,

在右边选择Spring2.0,下拉选框选择spring 2.0 AOP libraries(我的默认就是),找到asm.jar(我这里是asm-2.2.3.jar),移除即可,然后重新启动服务器,发布项目。如下图所示:

ssh框架整合-NoClassDefFoundError-NoSuchMethodError-遁地龙卷风

(2)恢复移除的jar包

移除buildpath中的jar包是有隐患的,以前面移除的asm.jar为例,点击myeclipse的Windows,点击preference,左边依次点击MyEclipse->ProjectCapabilities->Spring,在右边选择Spring2.0,进入后随便点击一个jar包,点击Add JAR/ZIP,如果你发现地址栏出现\data\2.0\lib\aopalliance这样的片段,你一定想到了,lib目录下有spring2.0全部的jar,找到你想要的就可以了。