我想知道,我尝试了无数复杂的搜索词来确定是否有办法延迟 Java 中类的加载。我的意思是,可以在类/构建路径上找到这些类,但我不希望它们在启动时加载。这会导致使用了错误的类加载器。
我是否可以选择性地延迟或阻止默认类加载器加载某些类/JAR?
示例(在构建路径上使用 3rd 方 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 的自动完成),因为它实际上不在构建路径上。