0

Tomcat 6 の Java 6 で Web アプリケーションを実行しています。null ImageIO.readが返されます。

同じ [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 を返すのはなぜですか?

4

1 に答える 1

1

ImageIO.readが返される理由は、それを読み取ることができると主張するプラグインnullがないためです (そうでない場合、入力が でない限り、入力を読み取ることができると主張する最初のプラグインを使用して読み取りが試行され、画像を取得するか、例外がスローされます)。 .ImageReadernull

これには 2 つの原因が考えられます。プラグインがインストールされていない (ImageIO によって検出された)。または、入力が破損しているため、認識されません。後者がここでの問題ではないことを判断するのに十分なデバッグ/テストを行ったようです。したがって、問題はjai-imageioのインストールにあると思います。または、JAIプラグインがImageIOによって検出されない可能性があります。

(アプリケーションの起動時、または画像を取得するたびにnull) ImageIO でサポートされているすべての形式を ( を使用してImageIO.getReaderFormatNames()) デバッグ ログに出力し、TIFF がリストされているかどうかを確認できます。

jai-imageio JAR を Web アプリケーションの一部として (WEB-INF/lib で) 提供する場合、そうしない限り、再デプロイ後にプラグインが自動的に検出されないことに注意してくださいImageIO.scanForPlugins()。その場合は、Deploying the plugins in a web appを読むことをお勧めします。

于 2013-11-19T08:58:47.513 に答える