今天在做項目啟動tomcat的時候,發現窗口中報了如下錯誤:
java.lang.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass
這個問題困擾了我整整一個下午,都沒查究出來~~
最后上網查了下,發現有這個問題的人還真不少,一些沒碰到過這個問題的人就說是因為找不到這個類,但是解決方法都沒有明說,這是官方hibernate+spring的問題啊,沒有類,我們怎么辦啊~
然后發現有的說解決方法就是下最新的hibernate-annotations.jar的包~,這確實能夠解決問題,但卻不是最根本的解決方法,這個問題其實很奇怪,關鍵就在于Junit中測試沒問題,就是發布到項目中的時候,會出現這樣的問題~也就是MyEclipse在發布項目文件時的問題~
于是到MyEclipse的安裝目錄中搜索hibernate-annotations.jar的包,發現在其中有四個hibernate-annotations.jar的包(MyEclipse6.0的版本下,5.x的不知道,可能只有三個),對比了一下他們的目錄分別是:
1.MyEclipse\eclipse\plugins\com.genuitec.org.hibernate.eclipse_......\lib\annotations --[352k]
2.MyEclipse\eclipse\plugins\com.genuitec.eclipse.springframework_......\data\2.0\lib\hibernate --[257k]
3.MyEclipse\eclipse\plugins\com.genuitec.org.hibernate.eclipse_......\myeclipse-data\3.2\lib\entitymanager --[257k]
4.MyEclipse\eclipse\plugins\com.genuitec.eclipse.springframework_......\data\1.2\lib\dependencies\hibernate --[128k]
而出錯的就是第四個目錄下的hibernate-annotations.jar的包,一共128k大小
觀察四個包的文件大小后很明顯這個問題的原因出在Spring的版本上,由于spring2.0的版本比較新,所以更新的hinbernate包也比較新,而spirng1.2的版本中,雖然包含了hibernate3.x的版本,但是卻由于沒有及時更新其中的hibernate包,所以導致出現了這個異常bug,也不知道是因為MyEclipse沒有及時更新spring的補丁版本,還是因為spring的工程師忽略了這個問題~,犯下了這種小錯誤,哈哈,不過說起來也是,人無完人嘛~~
分析了問題發生的原因,最后剩下的就是這個問題的徹底解決辦法,很簡單
把搜索到的第二或者第三個文件夾中的hibernate-annotations.jar包復制到項目的lib目錄中覆蓋即可,當然如果以后不想再發生這樣的問題的話那就把這個文件直接覆蓋搜索到的第四個目錄中hibernate-annotations.jar吧,這樣以后MyEclipse就再也不會發生同樣的問題了~
轉至http://blog.csdn.net/fableking/archive/2008/01/21/2057457.aspx
posted on 2009-11-01 00:14
果果樹 閱讀(214)
評論(0) 編輯 收藏 所屬分類:
java