Javaクラスローダなどを参考により、異なるバージョンのjar
-
20-09-2019 - |
質問
この共通の問題です。私が使っている2図書館 A.jar や B.jar これらの依存のバージョンが異なっていると同一のjar.
ついで実行したい THIS.x.x.x.jar
MY.jar
-> A.jar -> THIS.1.0.0.jar
-> B.jar -> C.jar -> THIS.5.0.0.jar
できるコンパイルの特定のjar A.jar/B.jar)に対する依存性が実行時に負荷だけを1バージョン。る。
荷重1依存関係の最新バージョンするということは、私のコードでも実行時例外をスローしますが、図書館は後方互換性はありま後方に対応図書館が?).
とにかく知っているようなものOSGiを固定するのにこの問題です。
ったかのグの修正方法は、このような問題を...
多くの
解決
"古い"ですとかOSGI確実使用下でのフード)をインストールのClassLoaderのためのいずれのプログラムについてものご依存関係.そこで、例えば、アプリケーションサーバに対して走ることができる上、新しいバージョンでの同一アプリケーションの内側と同じJVM.
についてclassloader上位の階層となります。
おの設定によりトリッキーなことに、共同点では、クラスのいずれのプログラムについてもます。もの支店での授業に積み込みことがありますか。の方はそれを動作させるためにはずみのクラスロードによるブートクラスローダ(JREの授業やクラスローダのMY.jar 受け継がれ、両ます。
他のヒント
OSGiを固定するのにこの問題です。たOSGiバンドルはあくまでもjar追加のメタデータを詳します。バンドルバージョン番号、詳細なバージョン番号(範囲)の依存のjar.
見 この入門Javaworld第 ます。
これを解決するなOSGiを確実に手動でコンパイルと実行機能対応のjar.としていることを発見し、必ずしも自明な課題です。以来、瓶なものを明らかにするためのバージョンの確認などを行わない限りこの記録を比較しチェックサムはフェースの通称です。
多くのライブラリの後方に対応しました。な..
古い方法を試してみるの依存からのみショールーム:イメージ.
生まれてより安全なものにしようとするコンパイルとして活用することも同じバージョン(最新版).
少なくともいコンパイル時にエラー、の代わりに実行時エラー。
必要な場合を修正でき、少しお図書館が作品の依存性...
このアクセスすることが必要なの源泉---
※コンパイル時の互換性を保証等するものではありません正しい実行時の挙動です。ではもう一歩ことができます:
- を読むWhatsNewのファイルを新しいバージョンのjar
- にインターネットユーザーの報告の互換性の問題
- 書JUnits
- を比較し、コードの両方瓶
どのよKLE、デフォルトのアプローチによる新しいバージョン。保証はありませんが、ほとんどの時間をこの作品。最も優れた方が肥大化したもの)が使用OSGIを取得します。
参照の基本的な"oldway"実行貸出 https://github.com/atulsm/ElasticsearchClassLoader
このアプローチを後方互換バージョンのelasticsearchト。