閒來無聊搭了個小型WEB應用系統框架,用了從JBOSS COMMUNITY上下載的四個包文件:php
hibernate-core-3.6.3.Finaljava
hibernate-commons-annotations-3.2.0.Final數據庫
hibernate-jpa-2.0-api-1.0.1.Finalapi
hibernate-annotations-3.5.0-Final 一切都是這個包惹的禍app
作好Hibernate的各項配置後,寫了一個Test類用main方法作了一下測試,能夠正常進行增刪改查的數據庫操做。接着就開使在工程裏寫了 些操做數據庫的方法,而後寫了個頁面配合Struts的完整流程,讀取並在JSP頁面上顯示數據庫中一個表的內容列表。接着啓動Tomcat服務後,第一 次執行這個Action的時候報了一個錯誤,框架
java.lang.VerifyError: class org.hibernate.type.WrappedMaterializedBlobType overrides final method,在沒有重啓TOMCAT的狀況下再次執行這個Action就會出現,ide
HibernateSessionFactory.getSession() HibernateSessionFactory java.lang.NoClassDefFoundError 錯誤。其中HibernateSessionFactory 這個類是MyEclipse添加Hibernate的時候自動生成的Factory類。測試
由於是剛搭的框架,因此引入的包還比較少,因此看了眼buildpath中,並無重複的包,很奇怪。因而上網開搜,終於被我搜到。。得以解決,緣由是從 hibernate-core 3.6.0之後hibernate-annotations
被整合到到hibernate-core這個包中,因此個人問題就是
ui
hibernate-core-3.6.3.Final 和 hibernate-annotations-3.5.0-Final 衝突形成的。從buildpath中remove掉hibernate-annotations-3.5.0-Final.jar,刪除WEB-INF下 的classes文件夾的內容,從新build了下project,一切恢復正常。spa
參考:https://forum.hibernate.org/viewtopic.php?f=1&t=1010086
http://stackoverflow.com/questions/6384428/version-disparity-in-hibernate-core-annotation-jars