2016-10-21 77 views
1

我有一個需求,我需要在運行時引用我的應用程序中相同JAR的兩個不同版本:在某些情況下爲fop.jar(v1.0),在某些其他情況下爲fop 1.1.jar在運行時使用不同版本的相同JAR

我該如何做到這一點?

我無法動態加載它,因爲我的EAR不會在沒有這個的情況下被編譯。

+3

的關鍵是:這絕對需要你使用自定義類加載器;以便您的應用程序的一部分與類X v1.0一起運行;另一個使用類X v1.1。這是可能的,但需要*仔細*設計。我寧願花大腦的力量去想辦法**而不是**要求使用兩個不同版本的相同JAR。 – GhostCat

+0

感謝您的回覆。這是我們正在嘗試做的事情,但舊代碼庫有很多不兼容的xsl,很難在短時間內糾正。我正在尋找一種戰術性的解決方案,在不改變舊的xsl的情況下獲得成功。 –

+1

而且您認爲**使您的舊代碼庫使用不同的類加載器將會是一個風險較低/耗時的想法?我的直覺是:這可能更難。 – GhostCat

回答

0

我剛剛用一種非常黑客的方式解決了這個問題。出於某種原因,我需要pdfbox 1.5和2版本。所以我將.jar文件的所有內容提取到一個臨時目錄中,然後使用Notepad ++進行搜索並替換文件中的文件。我用urg.apache替換了org.apache,用urg/apache替換了org/apache(搞砸了org.apache.commons然後修復),然後將替換的文件壓縮到新的.jar。 安裝了它與 到Maven MVN安裝:安裝文件-Dfile = pdfbux-1.5.0.jar -DgroupId = urg.apache.pdfbox -DartifactId = PDFBOX -Dversion = 1.5.0 -Dpackaging =罐子

在我的pom.xml我有2個依賴項。 1.5版使用urg.apache 在使用1.5我用進口urg.apache代碼...

我知道這是一個瘋狂的黑客但它救了我很多時間

相關問題