簡體   English   中英

具有相同jar的Java類加載器

[英]Java classloader with same jar

我知道許多主題都在談論類路徑加載器和可傳遞的依賴關系,但我幾乎不感到困惑。

我正在開發一個使用spring 2.0.5和spring-ws的舊應用程序,並且從項目開始到現在都可以正常工作。 最近,我們面臨一個運行時問題,並帶有諸如methodnotfoundexception之類的異常。

實際上,我們看到spring-ws依賴於spring-2.5。 所以Maven傳遞依賴項在spring 2.0.5附近的我的webinf / lib目錄中添加spring 2.5

但是我不明白為什么多年以來所有功能都能正常工作,現在為什么Weblogic決定在spring2.0.5之前加載spring2.5並導致此錯誤?

我們已經糾正了問題,現在我正在尋找具有不同版本的同一個jar,並且當我為避免將來出現依賴問題而進行限制時,確實會導致構建失敗。

但是我只想了解為什么weblogic決定加載一個或另一個jar? 因為如果按字母順序排列,則將始終加載相同的jar,但是在我的示例中,順序會發生變化...因此,我不清楚發生了什么。

預先感謝;)

盡管有文件證明WEB-INF/classes之前加載WEB-INF/lib ,文件是不是在你們這樣的情況下明確的-那里有在同級春天的副本WEB-INF/lib

在Tomcat中,它是按字母順序排列的,但看起來像Websphere,Jboss和Weblogic是隨機的。 參見https://stackoverflow.com/a/5817890/327426

從Oracle論壇上的一些話題中,建議您運行適用於您的應用程序的Classloader分析工具,該工具位於http://docs.oracle.com/cd/E23943_01/web.1111/e13706/classloading.htm#BABHJGJJ ,並參見結果。 該工具將識別類加載沖突。

https://community.oracle.com/thread/2387921?tstart=0上看到類似的問題

2009年http://www.coderanch.com/t/472496/BEA-Weblogic/Loading-order-jar-WEB-INF上有關Weblogic v9.2的帖子指出“檢查日志,我在WEB-INF中看到.jars / lib以相反的字母順序加載”。 這對於您的版本可能適用,也可能不適用

另一個選擇是使用Maven繞過打包在WAR中的可傳遞導入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM