私は疑問に思っています。Javaでクラスのロードを遅らせる方法があるかどうかを判断するために、無数の複雑な検索用語を試しました。つまり、クラスはクラス/ビルドパスにありますが、起動時にロードされたくありません。これにより、間違ったクラスローダーが使用されます。
選択的かどうかにかかわらず、デフォルトのクラスローダーが特定のクラス/ JARをロードするのを遅らせたり阻止したりできますか?
例(ビルドパスにサードパーティのjarを使用):
// boilerplate main
JarWrapper apiJar = SpecialJarLoader("api.jar"); // SpecialJarLoader is a proprietary class loader
Class apiClass = apiJar.loadClass("org.company.comm.AConnection"); // runtime failure here due to the class already being loaded
ビルドパスからJarを削除すると、予想どおりapiClass.getClassLoader()が独自のローダーになります。問題は、「org.company.comm.AConnection」またはJar内の他のクラス(IDEのオートコンプリートを含む)が実際にはビルドパス上にないため、自由に使用できないことです。