2011-07-29 3 views
1

私ははA.jar、b.jar、およびc.jarからJavaのスレッドのコンテキストクラスローダーからcertinクラスを除外しますか?

java -cp a.jar;b.jar;c.jar MainClass 

すべてのクラスは、私のプログラム内のすべてのスレッドに利用できるようになり、次のように呼び出されたプログラムを持っている場合。プログラムの実行中に、a.jar、b.jar、およびc.jarのほとんどのクラスを除いて、利用可能なクラスが限られているため、ある時点で作成されたスレッドが必要です。これを行うには、システムクラスパスからすべてを含んでいないクラスローダーに必要なクラスを追加するか、クラスローダーを取り出してそこからクラスを削除する方法がありますか?私が現在知っている唯一のオプションは、ブートストラップクラスを作成し、JVMの初期化時に各スレッドに必要なクラスパスをロードすることです。明白なものがないか、私の唯一の選択肢をブートストラップしていますか?

+0

http://jarvana.com/jarvana/view/org/springframework/spring/2.5.6/spring-2.5.6-sources.jar!/org/springframework/core/OverridingClassLoader.javaのようなものを使用できますか? ?format = ok?春のlibから? –

答えて

1

パス上にないクラスのloadClass(String name)にClassNotFound例外をスローするカスタムClassLoader(つまりURLClassLoaderを拡張)を記述することができます。これをcontextClassLoaderとして設定し、そこからスレッドのRunnableをロードします。

関連する問題