spring2.0、struts1.2、hibernate3.0、myeclipse8.5、tomcat6.0,整合之中出現了很多問題,前幾天忙著整理畢業論文的資料,時間騰出來了,總算有能寫的東西。話說這宿捨的人少了,蚊子的選擇也少了。
java.lang.NoSuchMethodError、 java.lang.NoClassDefFoundError,類似於這種類型的錯誤是因為框架間jar包沖突了。
已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),移除即可,然後重新啟動服務器,發布項目。如下圖所示:
移除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,找到你想要的就可以了。