我想知道是否有办法在运行时选择同一个jar的不同版本。我希望避免使用maven配置文件,因为这将是构建时选择。
让我们说同一个罐子有两个版本:
greatFeature_version_A.jar
greatFeature_version_B.jar
我最初的想法是使用JMX创建一个基本的运行时切换选择,这两个jar都包含在类路径中。此外,两个jar的内容是相同的(没有内部类的版本化或不同的命名)。
因此,当请求类时,从version_A开始,类加载器将始终选择它找到的第一个类,而不管它属于哪个jar。
我的想法是,这种方式无法实现有效的运行时切换。我想知道是否有人可能有经验丰富的东西,并有一个推荐的解决方法。我也希望尽可能避免编写自定义类加载器。
非常感谢!
P.S。关于SO的其他相关问题表明自定义类加载器,如this一个。
答案 0 :(得分:0)
你可以使用jarjar来“重命名”这些包,以便伟大的Feature_version_A.jar的包开始ajar。*而另一个启动bjar。*这样你就可以同时使用同一个应用程序中两个jar的代码。