質問: new MyExtensionClassLoader(); ``` 私が打つ問題は、JDTコンパイラが `Play.classloader` インスタンスを使用してクラスをロードしているように見えないことです。 だから私は2つの質問があります: JDTコンパイラは、 `Play.classloader` インスタンスを使用していない場合、実際にどのクラスパスを使用していますか? より一般的には、JDTコンパイラで使用できるように、実行時にjarファイルをPlayに読み込む方法はありますか?
回答: あなたの問題は、ApplicationClassloaderの親クラスローダーであるjava.lang.Classloaderを変更できないということです。 コンストラクタを見ると、ApplicationClassloader.classがロードされたクラスローダーが常に選択されることがわかります。 ApplicationClassloaderのコンストラクタに親クラスローダをparamとして送ることができれば、これを行うことができます: 新しいClassloaderAは、親クラスローダーを持つjava.lang.ClassloaderをJVM-defaultとして拡張します。次に、ClassloaderAで、findClassとgetResourceAsStreamをオーバーライドして、親を探す前にjarファイルを探します。 Play.classloaderに親クラスローダとしてClassloaderAのインスタンスを持つApplicationClassloaderの新しいインスタンスを与えることができます。 私は、これがClassloader-Hirarchyを正しいものにすると思います。