我想知道,我已经尝试了无数令人费解的搜索术语来确定是否有办法延迟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
Run Code Online (Sandbox Code Playgroud)
如果我从构建路径中删除Jar,apiClass.getClassLoader()是预期的专有加载器.问题是我无法自由使用"org.company.comm.AConnection"或Jar中的任何其他类(包括IDE的自动完成),因为它实际上并不在构建路径上.