在运行时选择不同的jar - 切换

时间:2011-03-27 20:59:30

标签: java runtime classpath toggle jmx

我想知道是否有办法在运行时选择同一个jar的不同版本。我希望避免使用maven配置文件,因为这将是构建时选择。

让我们说同一个罐子有两个版本:

greatFeature_version_A.jar greatFeature_version_B.jar

我最初的想法是使用JMX创建一个基本的运行时切换选择,这两个jar都包含在类路径中。此外,两个jar的内容是相同的(没有内部类的版本化或不同的命名)。

因此,当请求类时,从version_A开始,类加载器将始终选择它找到的第一个类,而不管它属于哪个jar。

我的想法是,这种方式无法实现有效的运行时切换。我想知道是否有人可能有经验丰富的东西,并有一个推荐的解决方法。我也希望尽可能避免编写自定义类加载器。

非常感谢!

P.S。关于SO的其他相关问题表明自定义类加载器,如this一个。

1 个答案:

答案 0 :(得分:0)

你可以使用jarjar来“重命名”这些包,以便伟大的Feature_version_A.jar的包开始ajar。*而另一个启动bjar。*这样你就可以同时使用同一个应用程序中两个jar的代码。