我根據類加載器的文件運行Tomcat 6.0.23,和(http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html)的webapps應該尋找類順序爲:Tomcat的類加載似乎並不表現爲記錄
- 引導
- 系統
- WEB-INF/classes中
- WEB-INF/lib目錄
- 常見
我有一個使用hibernate的web應用程序,而hibernate jars在它的WEB-INF/lib目錄中。當它自己運行時,一切正常。
我也有一個jar文件需要坐在tomcat/lib目錄中,因爲它包含一些需要在啓動時加載的類(一個對象工廠和它創建的對象)。這些類使用toplink來實現他們的JPA,這裏是我遇到問題的地方。
我需要把toplink jars放在tomcat啓動時可以訪問的地方,所以我把它們放在tomcat/lib目錄下。根據上面列出的類加載的順序,當使用hibernate的webapp需要hibernate實現類時,它應該在它的WEB-INF/lib目錄中找到它們,但實際發生的是它從tomcat/lib中找到了toplink實現類目錄,並且我得到一個類轉換異常。
任何人都可以請解釋爲什麼我的Web應用程序類沒有找到他們需要在他們的WEB-INF/lib目錄,或建議一種方法來在運行時調試類路徑?
謝謝。
很肯定存在着階級在Tomcat的/ lib目錄覆蓋由Hibernate需要以及一些類。所以你最終可能會得到同一類的不同字節碼版本,從而導致Hibernate失敗。檢查重複類名和/或重新設計... – home