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 です