私はJavaアプリケーションにプラグインシステムを持っています。 JAR/Javaクラスをアプリケーションに即座にロードすることは可能ですか、またはこれらのJAR/Javaクラスをアプリケーションに含める必要がありますか?稼働中のJavaアプリケーションにJARをロードすることは可能ですか?
私の考えは、プラグインをアプリケーションにロードし、Javaアプリケーションを再起動することなくこのクラスのインタフェースメソッドを呼び出すことでした。これは可能なのか、それとも全く賢明なのでしょうか?
私はJavaアプリケーションにプラグインシステムを持っています。 JAR/Javaクラスをアプリケーションに即座にロードすることは可能ですか、またはこれらのJAR/Javaクラスをアプリケーションに含める必要がありますか?稼働中のJavaアプリケーションにJARをロードすることは可能ですか?
私の考えは、プラグインをアプリケーションにロードし、Javaアプリケーションを再起動することなくこのクラスのインタフェースメソッドを呼び出すことでした。これは可能なのか、それとも全く賢明なのでしょうか?
ダイナミックプラグインのロード/アンロードにOSGiを使用することをお勧めします。それはすべてのクラスの読み込みのものを処理します。 OSGiを使用できない場合は、独自のクラスローダーを使用して、ロードするjarファイルの場所を設定する必要があります。
独自のClassLoaderを使用してJARファイルを検索し、クラスバイトをJVMに返すことができます。太陽からのこのチュートリアルを見てください:http://java.sun.com/developer/onlineTraining/Security/Fundamentals/magercises/ClassLoader/help.html
OSGiもお勧めしますが、より簡単なプラグインベースのシステムでは、Javaプラグインフレームワークをチェックしてください。プラグインベースのシステムを簡素化することを目的としており、http://jpf.sourceforge.net/で見つけることができます。
@LivはURLClassLoaderのようなものを単純な一回限りの読み込みに使うことができますが、これは簡単な修正であり、プラグイン読み込みシステムの出発点ではありません。