java - 无法使用 JCIFS 和 jai imageio 从联网的 Windows PC 读取 tiff 图像

标签 java windows tomcat jai jcifs

我有一个在 Tomcat 6 中的 Java 6 上运行的 Web 应用程序。ImageIO.read 返回 null。

它试图从同一 [Windows] 网络上的计算机检索 tiff 图像。 为此,我使用 JCIFS 作为身份验证,并使用 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?

最佳答案

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 .

关于java - 无法使用 JCIFS 和 jai imageio 从联网的 Windows PC 读取 tiff 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20051032/

相关文章:

java - Api Jena - 我收到警告 "RDFDefaultErrorHandler"

windows - 你能在 VBScript MsgBox 中的按钮之间输入 'mix and match' 吗?

tomcat - Apache Tomcat 启动失败,端口已被使用

java - tomcat7 maven插件WebApplicationInitializer错误

java - Kotlin: 'public' 属性公开其 'local' 类型参数 <未提供名称>

java - 用java构建二叉搜索树

java - AbstractButton.setEnabled(true) 的 NullPointerException

Python timeit命令行错误: "SyntaxError: EOL while scanning string literal"

PythonMagick 找不到我的 pdf 文件

java - 转义 HTTP 请求中的斜杠