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