我正在研究项目需要动态加载模块(这是带有依赖项jar的jar)。我的尝试是生成一个ClassLoader,并使用app ClassLoader作为每个模块的父级,以使用两个ClassLoader(app和module)构建对象。但是某些模块具有与主应用程序相同的依赖关系,不同版本会导致某些异常,如“FieldNotFound”。有没有办法控制ClassLoader为每个类加载哪个.class或.jar文件?
我尝试过OSGi,但对我来说处理起来太复杂了。见https://stackoverflow.com/questions/20330490/bnd-importing-optional-requirements-and-cannot-exclude