0

プレゼンテーション スキルが不十分で申し訳ありません。つまり、URLClassLoader A を作成し、その URL[] が B になったので、B 内のすべての jar を動的にロードおよびアンロードする必要があります。しかし、私はそれを行う方法がわかりません。

4

1 に答える 1

0

クラスローダーは不変である場合があります。つまり、メイン システムのクラスローダーをコードで変更することはできません。これは、メイン クラスローダーの上に独自の 2 番目のクラスローダーを作成できないという意味ではありませんが、JVM を再起動しないとシステム クラスローダーからクラスをアンロードできない可能性があることを意味します。あなたの質問は次の質問と重複していると思います: How should I load Jars dynamic at runtime? . これは、OSGi が答えかもしれないことを示唆しています: http://www.osgi.org/Technology/WhatIsOSGiこれは、 HelloWorldの例へのリンクです。

クラスをアンロードまたは追加するためのより簡単な方法が必要な場合は、別のクラスパスを使用して JVM を再起動する方法を検討してください。アプリを 1 つの JVM で実行し、アプリが通信するバックグラウンドに 2 つ目の JVM がある場合、メイン アプリは別のクラスパスを使用してバックグラウンド JVM を再起動できる可能性があります。ただのアイデア。私はこの分野の専門家ではないので、おそらくもっと独創的な方法があるでしょう。

于 2012-11-06T21:16:48.387 に答える