的Websphere 8.0.0.11
休眠4.2.21.Final
時javassist_856不能轉換爲javassist.util.proxy.Proxy我發現了許多關於這個問題的問題,但他們都沒有爲我工作。
如果我在Websphere中部署應用程序,它可以正常工作。
然而,我們已經定義了一個共享庫,其中包含所有第三方庫(spring,hibernate,javassist等),以便我們的WAR更薄。
這種方式在部署過程中將我們的瘦WAR與該Websphere共享庫相關聯。
問題是,當我們以這種方式部署應用程序時,會拋出ClassCastException Hibernate exception _$$_javassist_856 cannot be cast to javassist.util.proxy.Proxy
。
我已經檢查了websphere控制檯中的加載jar,並且只能在類路徑中看到一個javassist jar(3.18.1-GA)。
爲什麼會發生這種情況?
UPDATE
我也用PARENT_FIRST和PARENT_LAST類加載嘗試。
更新2
我只是發現了WebSphere加載自己的了Javassist的jar:
URL location = ProxyFactory.class.getProtectionDomain().getCodeSource().getLocation();
logger.info("{}", location);
它打印:file:/opt/IBM/WebSphere/AppServer/plugins/javassist.jar
嗨拉斐爾,謝謝你的回答。是的,我們正在共享一些在websphere共享庫中定義的庫,以減輕我們的激烈戰爭。到目前爲止,我們已經有Spring 4.x + Hibernate 3.6,並且一切運行順利。 Websphere的Javassist必須與共享庫中的兼容。不幸的是,這似乎沒有一個好的解決方案... – codependent
你可以做的是,你可以遮蔽你的依賴關係,把它放在不同的命名空間。 –