..我有一个应用程序(一个.war),它有一个插件系统,其中每个插件插件都是.jar及其jar文件.jar依赖。 而在webapp中,通过管理Web界面,插件通过使用ClassLoader加载.jar及其依赖关系。 但问题是,例如,2个插件A和B可能有一个或多个通用依赖项(commons-io.jar,commons-collection.jar,...)...所以通常我不应该加载更多一旦.jar已经被另一个插件加载,或者已经存在于webapp本身 - > WEB-INF/lib/ 因此,我想知道是否有一种方法可以不加载另一个.jar文件已经通过webapp或其他插件加载 如果可能,我该怎么做!如何验证.jar或类已被ClassLoader加载到Java
其实,无论有什么解决方案,我只是想避免类加载器问题。
注:各插件是具有到它下面的架构
插件名称/
- code/
- A.class
- B.class
- ...
- lib/
- commons-io.jar
- log4j.jar
- ....
- description.xml
- version.txt
在目录中的每个代码.class文件/由类加载器加载的.zip文件,插件的lib /目录中的每个.jar也会被加载。
但通常情况下,我不应该再加载存在于的.jar类“公地io.jar”如果以往任何时候都已经存在......
我希望我已经足够清楚,谢谢提前注意和帮助。
是否有可能两个插件需要不同版本的相同依赖项?或者这不是一个问题? – kylewm
是的,有可能2个插件具有不同版本的相同依赖关系 – paissad