システムクラスローダーがアプリケーションのクラスロードを引き継ぐことを期待しています。したがって、プログラムを次のように実行すると、
java -Djava.system.class.loader=MyClassLoader Main
アプリケーション内でクラスのロードを制御できるように、MainがMyClassLoaderによってロードされることを期待しています。しかし、それは起こりません。Mainは、Mainから参照される他のクラスと同様に、デフォルトのシステムクラスローダー(sun.misc.Launcher $ AppClassLoader)によって引き続きロードされます。ただし、getSystemClassLoader()を呼び出すと、MyClassLoaderのインスタンスが返されます。
これはどのように役立ちますか?Mainがカスタムシステムクラスローダーによってロードされるのは意味がありませんか?アプリケーションのクラスの読み込みを制御するにはどうすればよいですか?そして、誰がgetSystemClassLoader()値を使用しますか?