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