アプリケーションの実行中に新しい JAR ファイルを動的にロードするには実行すると、URLClassLoader を利用できます。 class:
ClassLoader loader = URLClassLoader.newInstance( new URL[] { yourURL }, getClass().getClassLoader() );
これにより、指定された URL を含む新しい ClassLoader インスタンスが作成されます。次に、このクラス ローダーを使用して、JAR ファイルからクラスをロードできます。
Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);
ここで、clazz は、JAR ファイルからロードしたクラスを表します。
アプリケーションの実行中に既存のクラスを再ロードすることは、データの不整合が生じる可能性があるため、より困難になる可能性があります。ただし、必要に応じて、次の手順を実行できます。
Constructor<?> ctor = runClass.getConstructor(); Runnable doRun = (Runnable) ctor.newInstance(); doRun.run();
クラス ローダーは、関連付けられたスレッドとオブジェクトが参照しなくなると使用されなくなります。 ThreadLocal、JDBC ドライバー、または同様の問題によるメモリ リークがない限り、それらはガベージ コレクションされる可能性があります。
実行中に既存のオブジェクトに関連付けられたデータを保存する必要がある場合は、クラスをリロードする場合は、シリアル化などの永続化メカニズムを使用してデータを保存および復元することを検討する必要があります。
URLClassLoader.addURL を使用して、既存のクラス ローダーに新しいクラスを追加することもできます。ただし、クラスのロードに失敗すると、クラスはそのクラス ローダー インスタンスにロードされなくなります。
以上が実行時に Java アプリケーションで JAR を動的にロードおよび再ロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。