gpt4 book ai didi

java - 通过java在运行时加载两个不同版本的jar

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:41 24 4
gpt4 key购买 nike

我正在开发一个项目,其中使用了 POI 2.5 版 jar 的少数功能,并且我已经开发了一个新功能,我需要 POI 3.10 版 jar,所以现在的问题是以前的功能无法正常工作,因为它在 poi 2.5 版本 jar 上完美运行

现在,如果我在我的类路径中保留两个版本的 poi jar,有什么方法可以只为我的类显式调用 poi 3.10 版本,而对于之前的功能,调用 poi 2.5 版本

默认情况下,如果我保留两个版本的 poi jar,那么调用总是在 poi 2.5 版本的 jar 中进行,所以我希望我的类(class)说类(class) abc 明确地调用 poi 3.10 版本

请告知我可以在这里显式使用类加载器吗,还请告知是否可以动态创建类的对象

class ABC 
{

//version of poi 3.10 being called here
HSSFWorkbook workbookXls = new HSSFWorkbook();

}

class def 正在使用早期版本的 POI 2.5

class DEF
{

//version of poi 2.5 being called here
HSSFWorkbook workbookXls = new HSSFWorkbook();

}

最佳答案

是的,这可以做到,从不同的类加载器加载每个 jar。

  1. 将两个 jar 从您当前的类路径中移出
  2. 为每个 jar 创建一个 URLClassLoader,将您的实际类加载器作为父级
  3. 利用反射处理POI

您还可以重构其中一个 jar 以更改其包并避免冲突。如果您将 Maven 与 jar-jar MOJO 一起使用,这可以自动完成。 .

关于java - 通过java在运行时加载两个不同版本的jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com