1

我正在为某些应用程序编写插件。让我们假设 libA-1.0 的 Application hava 库依赖项和我的插件具有 libA-2.0 的类似依赖项。版本不同,互不兼容(即它们有不同的api方法签名)。

如何防止我的插件从 libA-1.0 加载类(或如何强制它使用来自 libA.2.0 的类)?

有没有办法做到这一点,而不是编写自定义类加载器,也不使用 forName、loadClassDefinition 调用?

当您将一些库放到 *.war 存档中并且由于 Web 容器在类路径上有“相同”的库时,它们不会加载,也会出现类似的问题。

谢谢你的帮助。

问候, 帕维尔

4

1 回答 1

0

OSGI开箱即用地提供了此功能。我确信还有一些其他插件框架提供类似的功能。

有一个URLClassLoader应该能够提供很多从不同 jar 加载类的功能。您必须付出一些努力来更改正在执行工作的线程的类加载器。手头没有示例,如果您需要具体示例,则必须编写一个(除非您可以通过搜索引擎找到一个)

于 2012-07-26T09:31:37.910 回答