如何防止从jar加载类

时间:2012-07-26 09:17:21

标签: java jar classpath classloader contextclassloader

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

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

有没有办法做这个不写自定义类加载器而不使用forName,loadClassDefinition调用?

当你将一些库放到* .war存档并且它们没有加载时会发生类似的问题因为web containter在类路径上有“相同的”库。

请求任何帮助。

此致 帕维尔

1 个答案:

答案 0 :(得分:0)

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

有一个URLClassLoader应该能够提供从不同jar加载类的许多功能。你将不得不付出一些努力来改变正在进行工作的Threads的类加载器。手边没有示例,如果您需要一个具体示例,则必须编写一个示例(除非您可以找到一个带有搜索引擎的示例)