Heyho,
假设我们有这样的设置:
申请 - > 插件 - >的模块
“插件”和“模块”依赖于“应用程序”。
应用程序使用库的1.0版本。 模块取决于相同的库,但版本2.0。类是相同的,但在2.0中删除了一些方法,并添加了一些方法。 插件使用应用程序的父ClassLoader和模块 插件的父ClassLoader。
现在的问题是该模块使用的是1.0版本的库,但它依赖于2.0 - > 例如找不到方法
解决这个问题的方法是什么?可行的方法是重新定位版本2.0,但可能在运行时期间有一个解决方法。也许可以更改类加载器来解决问题。
最高
答案 0 :(得分:1)
您的选择是:
选项3.看起来像:
Application Base -> plugin -> module (lib 2.0)
-> Application Core (lib 1.0)
这实质上使插件和应用程序核心同步,因此不再存在类加载器问题。