2

C++ からスレッドを開始し、Java を呼び出しています。JVM 自体には、必要なすべての jar が -Djava.class.path に渡されたクラスパスが正しく設定されています。

新しいスレッドで「コンテキスト クラス ローダー」が null になるのはなぜですか?

私はこのシナリオを持っています:

ClassLoader cl = Thread.currentThread().getContextClassLoader(); // null on new threads
ClassLoader currCl = MyClass.class.getClassLoader();
ClassLoader jbossCl = org.jboss.remoting.InvocationResponse.class.getClassLoader();

最初のスレッド (Eclipse では「メイン」と表示されます) では、3 つのオブジェクトすべてが有効であり、クラスが含まれています。以降のすべてのスレッドclは null です。

私には意味がありません。クラスを JVM にロードすると、それらはすべてのスレッドでグローバルに利用できるはずですよね? また、なんらかの理由で、currCl と jbossCl には大幅に異なる量のクラスがあります。最初は ~600 で、もう 1 つは >1000 です

4

1 に答える 1