Java 可以在ClassLoader中控制类应该加载哪个文件

Java 可以在ClassLoader中控制类应该加载哪个文件,java,classloader,Java,Classloader,我正在处理一个需要动态加载模块的项目(这些模块是带有依赖项jar的jar)。我的尝试是生成一个类加载器,并将app类加载器用作每个模块的父类,以使对象可以用两个类加载器(app和module)强制转换。但某些模块与主应用程序具有相同的依赖关系,但版本不同,因此会导致一些异常,如“FieldNotFound”。有没有办法控制ClassLoader应该为每个类加载哪个.class或.jar文件 我试过OSGi,但它太复杂了,我无法处理。请参见@RomanVottner,但是单独的类加载器会使类加载器

我正在处理一个需要动态加载模块的项目(这些模块是带有依赖项jar的jar)。我的尝试是生成一个类加载器,并将app类加载器用作每个模块的父类,以使对象可以用两个类加载器(app和module)强制转换。但某些模块与主应用程序具有相同的依赖关系,但版本不同,因此会导致一些异常,如“FieldNotFound”。有没有办法控制ClassLoader应该为每个类加载哪个.class或.jar文件


我试过OSGi,但它太复杂了,我无法处理。请参见

@RomanVottner,但是单独的类加载器会使类加载器之间的类不可压缩,如何解决这个问题?在我的情况下,这并不像克隆那么简单,它们应该能够相互通信。@RomanVottner或者是否有任何方法可以覆盖控制类加载器从文件加载依赖项的机制?@RomanVottner谢谢,我会检查它