日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate 4.2.8,javassist 3.18.1和ClassCastExceptions –注意您的类路径

發(fā)布時(shí)間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate 4.2.8,javassist 3.18.1和ClassCastExceptions –注意您的类路径 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我寫這篇文章是作為提示和警告,而不是絕對(duì)的解決方案。 我將嘗試針對(duì)我的案例(WebSphere 8.5.5)返回一種解決方法,但是我確信其他開發(fā)人員和應(yīng)用程序也會(huì)受到影響。 我已經(jīng)花了一些時(shí)間來找出問題的原因,所以暫時(shí),這篇文章將有助于增加上述關(guān)鍵字的搜索索引,并鏈接到休眠問題跟蹤器。

在當(dāng)前正在進(jìn)行的項(xiàng)目中,由于Hibernate ORM 4.2.0版庫中的錯(cuò)誤,我決定在安裝程序中將庫版本向前移動(dòng)并升級(jí)到最新版本。 Hibernate當(dāng)前以版本4.2.8作為最新的JPA 2.0兼容版本,而4.3.0是第一個(gè)正式的JPA 2.1兼容。 由于我正在開發(fā)Jee6版本,因此我選擇升級(jí)到4.2.8。

最終在4.2.8及更高版本中,庫中實(shí)現(xiàn)了“ 嚴(yán)重的 ”內(nèi)部API更改。 Hibernate遷移到j(luò)avaassist的新版本,該版本引入了一些新的內(nèi)部API調(diào)用和接口。 請(qǐng)參閱此處的鏈接問題。 因此,版本4.2.8將作為javassist- 3.18.1-GA的依賴項(xiàng)獲取到您的應(yīng)用程序。

最終,如果您碰巧引入了

  • 對(duì)Javassist版本的多個(gè)依賴
  • 一個(gè)容器通過“父級(jí)”類加載器為您的耳朵/戰(zhàn)爭(zhēng)提供了較舊的版本

然后,您將遇到類似這樣的問題。 簡而言之,如果您的容器中的活動(dòng)類加載器偶然捕獲了舊版本的javassist,則在加載jpa實(shí)體或執(zhí)行相關(guān)代碼時(shí),您很可能會(huì)遇到奇怪的類強(qiáng)制轉(zhuǎn)換異常或“未找到類”異常指向到過時(shí)的javassist API。

恕我直言,此更改應(yīng)該已經(jīng)引入到Hibernate的“主要”版本中,但是我很明白,有時(shí)開發(fā)人員的需求不能由全球開發(fā)人員用戶社區(qū)的不同需求和設(shè)置來強(qiáng)制要求。 因此,這只是我對(duì)“應(yīng)該存在”的看法,我仍然認(rèn)為Hibernate是最好的Java ORM。

如果您遇到這種情況,請(qǐng)先采取以下措施:

  • 檢查您的可部署jar依賴項(xiàng),并找到Javassist的任何其他實(shí)例,尤其是較舊的版本-根據(jù)您的容器和類加載設(shè)置檢查如何加載它們。
  • 如果您沒有明確包括任何額外的依賴項(xiàng),并且唯一的實(shí)例是“從休眠中獲取”的實(shí)例(如我的案例),那么您需要檢查是否從應(yīng)用程序或服務(wù)器級(jí)共享庫中加載了較舊版本的javassist或從應(yīng)用程序服務(wù)器中的“共享”類加載器。 (我仍在為Websphere 8.5.5進(jìn)行這一工作)。 您可以嘗試共享庫的加載順序或類加載模式(父??項(xiàng)優(yōu)先/父項(xiàng)末次)
  • 如果您找不到基于以上兩點(diǎn)的解決方案,或者您嘗試在應(yīng)用程序上嘗試使用類加載策略,并且證明確實(shí)很麻煩,那么只需切換到版本4.2.7 ,這似乎是最后一個(gè)解決方案。向后兼容舊版本的Javassist。

如果您是JBoss EAP 6.2和JBoss Wildfly 8用戶,那么您會(huì)很安全,這意味著這些容器已經(jīng)帶有“最新” javassist版本,但是您仍然需要對(duì)應(yīng)用程序可能引入的任何潛在沖突版本進(jìn)行分類。

希望我會(huì)為我的情況提供解決方法。

參考: Hibernate 4.2.8,javassist 3.18.1和ClassCastExceptions –在Papo的日志博客上,從我們的JCG合作伙伴 Paris Apostolopoulos 警惕 您的類路徑 。

翻譯自: https://www.javacodegeeks.com/2014/01/hibernate-4-2-8-javassist-3-18-1-and-classcastexceptions-watch-out-your-classpath.html

總結(jié)

以上是生活随笔為你收集整理的Hibernate 4.2.8,javassist 3.18.1和ClassCastExceptions –注意您的类路径的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。