【发布时间】:2011-04-14 22:24:05
【问题描述】:
我有一个系统,我正在通过定义明确的访问点为其创建插件。但是,有问题的插件使用了框架也使用的一些 jar,但版本不同。
代码的结构方式是集成在框架中的代码(扩展插件扩展点)和执行实际工作的代码很好地解耦(基本上归结为少于 10 个类的 API)。然而在这几个类的背后隐藏着一个相当大且复杂的系统(60+ jar 依赖)
问题如下:
如何确保由 API 类实例化的任何内容都是使用单独的私有 jar 文件库完成的?
换句话说,我如何隔离插件,使其与自己的私有库一起运行,而不会干扰主应用程序的库?
---- 编辑 ---- 到目前为止,唯一可以实现的两种方法是嵌入 OSGi 等框架或提供我自己的类加载器实现。后者可以完成,并且在网上提出了许多变体,尽管我没有发现任何东西可以让我对手头系统所需的稳定性充满信心。
这让我们回到了 OSGi,我希望有一个更轻量级的解决方案,但也许一旦我学习了这项技术,它就会证明它可以毫不费力地做我想做的事。
【问题讨论】:
标签: java plugins jar classloader dependency-management