无法使用JCIFS和jai imageio从网络Windows PC上读取tiff图像

时间:2013-11-18 15:06:49

标签: java windows tomcat jai jcifs

我在Tomcat 6中运行Java 6上的webapp。ImageIO.read返回null。

它尝试从同一[Windows]网络上的计算机中检索tiff图像。 为此,我使用JCIFS作为auth,并使用jai来读取图像。

在QA中,这是有效的,我检索并显示TIF。 在生产中,它没有。

我能够访问图像并正确检索文件路径。

以下是日志中的错误:

2013-11-18 11:06:47,405 [webapp] INFO  [http-8080-6] 
ScannedService.getScannedDocuments(66) | Customer.java 
get files at Paths[smb://sharedDrived/path/1HK01001.TIF]

2013-11-18 11:06:47,421 [webapp] INFO  [http-8080-6] 
ScannedDocument.<init>(32) | ScannedDocument.java 
constructor, image value: null

null是由:

返回的
ImageIO.read(smbStream);

为什么该行返回null?

1 个答案:

答案 0 :(得分:1)

ImageIO.read返回null的原因是没有ImageReader插件声称能够读取它(否则,除非输入为null,否则尝试使用声称它可以读取输入的第一个插件,你要么得到一个图像,要么抛出异常)。

这可能是由两件事引起的。没有安装插件(由ImageIO发现)。或者输入已损坏,因此无法识别。您似乎已经做了足够的调试/测试,以确定后者不是问题。所以我仍然认为问题出在jai-imageio的安装上,或者可能是ImageIO没有发现JAI插件。

您可以尝试(在应用程序的启动时,或每次获得null图像时)将ImageIO支持的所有格式(使用ImageIO.getReaderFormatNames())打印到调试日志,以及看看是否列出了TIFF。

请注意,如果您将jai-imageio JAR作为Web应用程序的一部分(在WEB-INF / lib中)提供,则重新部署后不会自动发现插件,除非您执行ImageIO.scanForPlugins()。在这种情况下,我建议你阅读Deploying the plugins in a web app