実行時にアプリケーション内の同じJARの2つの異なるバージョンを参照する必要がある場合があります。特定のケースではfop.jar
(v1.0)、場合によってはfop 1.1.jar
。実行時に同じJARの異なるバージョンを使用する
どうすればこの問題を解決できますか?
EARがこれを使わずにコンパイルされないため、動的にロードすることができません。
実行時にアプリケーション内の同じJARの2つの異なるバージョンを参照する必要がある場合があります。特定のケースではfop.jar
(v1.0)、場合によってはfop 1.1.jar
。実行時に同じJARの異なるバージョンを使用する
どうすればこの問題を解決できますか?
EARがこれを使わずにコンパイルされないため、動的にロードすることができません。
私はちょうど非常にhackishの方法でこの問題を解決しました。私は何らかの理由でpdfboxのバージョン1.5と2が必要でした。そこで、.jarファイルのすべての内容をtempディレクトリに展開し、Notepad ++の検索と置換を使ってorg.apacheをorg/apache(org.apache.commonsが混乱したorg/apache)でurg.apacheとorg/apacheに置き換えました。後で固定されます)、置き換えられたファイルを新しい.jarに圧縮しました。 は とMavenのためにそれをインストールMVNインストール:インストールファイル-Dfile = pdfbux-1.5.0.jar -DgroupId = urg.apache.pdfbox -DartifactId = pdfbox -Dversion = 1.5.0 -Dpackaging =瓶
で私のpom.xml私は2つの依存関係があります。私は輸入urg.apacheを使用1.5を使用してコードで をurg.apache使用して、バージョン1.5 ...
私は、これはクレイジーハックである知っているが、それは私に重要なことがある
に多くの時間を保存しました:カスタムクラスローダーを使用する必要があります。アプリケーションの一部がクラスX v1.0で実行されるようにします。もう1つはクラスX v1.1を使用します。それは可能ですが、注意深い設計が必要です。むしろ、同じJARの2つの異なるバージョンを使用する必要はありません。 – GhostCat
ご返信ありがとうございます。これは私たちがやろうとしていることですが、古いコードベースには短い時間内に修正するのが難しい互換性のないxslが多数あります。私は古いxslに変更を加えることなく、達成するための戦術的な解決策を探しています。 –
**あなたの古いコードベースで異なるクラスローダーを使用できるようにすることは、危険性が低く時間のかかるアイデアになると思いますか?私の直感は、それはもっと難しいかもしれません。 – GhostCat