1

我有一个系统,我正在通过定义明确的访问点为其创建插件。然而,有问题的插件使用了一些框架也使用但版本不同的 jar。

代码的结构方式是集成在框架中的代码(扩展插件扩展点)和执行实际工作的代码很好地解耦(基本上归结为少于 10 个类的 API)。然而在这几个类的背后隐藏着一个相当大而复杂的系统(60+ jar 依赖)

问题如下:

如何确保 API 类实例化的任何内容都是使用单独的私有 jar 文件库完成的?

换句话说,我如何隔离插件,使其与自己的私有库一起运行而不干扰主应用程序的库?

---- 编辑---- 到目前为止,唯一可以实现的两种方法是嵌入 OSGi 等框架或提供我自己的类加载器实现。后者可以完成,并且在网上提出了许多变体,尽管我没有发现任何东西可以让我对手头系统所需的稳定性充满信心。

这让我们回到了 OSGi,我希望有一个更轻量级的解决方案,尽管也许一旦我学习了这项技术,它就会证明它不需要太多努力就能做我想做的事。

4

2 回答 2

5

这就是OSGi的用途。Equinox是一个不错的小实现。

于 2010-09-20T22:31:04.570 回答
-3

据我所知,在 Java 中加载同一类的两个版本的唯一方法是运行 JVM 的两个实例。

于 2010-09-20T22:29:22.387 回答