(-1)寫在前面 spring2.0、struts1.2、hibernate3.0、myeclipse8.5、tomcat6.0,整合之中出現了很多問題,前幾天忙著整理畢業論文的資料,時間騰出來了,總算有能寫的東西。話說這宿舍的人少了,蚊子的選擇也少了。 (0)詳細解釋 a.錯誤產生的原因 java ...
(-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),移除即可,然後重新啟動伺服器,發佈項目。如下圖所示:
(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,找到你想要的就可以了。