実行時の JAR ファイルの再ロードとロード
Java システムが実行中にクラスをロードおよび再ロードできるようにするには、次の点を考慮してください。
既存のファイルを再ロードしていますクラス
既存のクラスのデータを再ロードしようとすることは、システムが不安定になる可能性があるため、通常はお勧めできません。
新しいクラスの追加
新しいクラスを別のクラスローダーにロードすることは実行可能ですオプション:
ClassLoader loader = URLClassLoader.newInstance(new URL[] { yourURL }, getClass().getClassLoader()); Class<?> clazz = Class.forName("mypackage.MyClass", true, loader); Class<? extends Runnable> runClass = clazz.asSubclass(Runnable.class); Constructor<? extends Runnable> ctor = runClass.getConstructor(); Runnable doRun = ctor.newInstance();
クラス ローダー ガベージ コレクション
メモリ リークがないことを前提として、使用されなくなったクラス ローダーはガベージ コレクターによって再利用できます (これは ThreadLocal、JDBC ドライバーなどで発生する可能性があります)。
Data永続性
クラスのリロード後もオブジェクト データを保持するには、シリアル化などの永続化メカニズムを検討してください。
高度なデバッグ トリック
デバッグ システムは高度な機能を提供します。多くの場合、信頼性が低く、実行が困難です。 debug.
既存のクラス ローダーへのクラスの追加
URLClassLoader では新しい URL を追加できますが、クラスが最初にロードに失敗した場合、そのクラス ローダー内でロードされることはありません。インスタンス。
以上が実行中の Java アプリケーションに JAR ファイルをリロードまたは追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。