我正在使用非开源库来处理图像。这个库依赖于 JPEG2000 图像类型的 JAI (jai_imageio.jar)。在独立程序中,一切正常,JPEG2000 图像得到正确处理。但是,当这两个 JAR 在 WAR 中部署到 Tomcat 时,找不到所需的 JAI 类。此外,如果我将 jai_imageio.jar 放在$CATALINA_HOME/lib
JAI 类中,就会发现一切正常。
供应商告诉我他们找到了所需的类,如下所示:
Iterator iter = ImageIO.getImageReadersByFormatName("JPEG2000");
我的理论是,因为 ImageIO 是 JRE 的一部分,所以使用的类加载器是“通用”类加载器,而不是 WAR 类加载器。出于这个原因,在 WAR 中的 JAR 没有找到,但在 Tomcat lib 目录中找到了。这听起来正确还是发生了其他事情?
我不希望将 JAI JAR 部署到 Tomcat lib 目录;我想将它作为 WAR 的一部分发布。有没有办法解决这个类加载问题?正如我所提到的,我无权访问源代码。我也许可以要求进行一些更改以促进 WAR 部署,但我不确定那可能是什么,也许是一种设置阅读器的方法,但这似乎很笨拙。
我很欣赏对此任何部分的反馈。谢谢。