GnuPdf に基づいて PDF ファイルを作成する Java プログラムを作成しました。(Windows または iSeries QSH で) ネイティブ Java コードを使用して実行すると完全に実行されますが、RPGLE インターフェイスを介して実行すると、画像を処理するときにプログラムがクラッシュします (ランダムな間隔のように見えます)。これらの 1 つを追跡して .jar ファイルから画像をロードし、コードから呼び出しを削除しました。しばらくは機能していましたが、現在は IFS からロードされたイメージでクラッシュしています。RPGLE が何らかの形でファイルをロックしているのかもしれませんが、アイデアはありますか? コードはサービス プログラムから呼び出されます。
ここにスタックトレースがあります
java.lang.NullPointerException
at gnu.jpdf.PDFImage.write(PDFImage.java:286)
at gnu.jpdf.PDFOutput.write(PDFOutput.java:114)
at gnu.jpdf.PDFDocument.write(PDFDocument.java:307)
at gnu.jpdf.PDFJob.end(PDFJob.java:182)
at com.mysite.pdf.PdfDocumentStateValid.endDocument(PdfDocumentStateValid.java:657)
at com.mysite.pdf.PdfDocument.endDocument(PdfDocument.java:36)
java.io.IOException: Descriptor not valid.
at java.lang.Throwable.<init>(Throwable.java:196)
at java.lang.Exception.<init>(Exception.java:41)
at java.io.IOException.<init>(IOException.java:40)
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:112)
at gnu.jpdf.PDFOutput.<init>(PDFOutput.java:96)
at gnu.jpdf.PDFDocument.write(PDFDocument.java:302)
at gnu.jpdf.PDFJob.end(PDFJob.java:182)
at java.awt.PrintJob.finalize(PrintJob.java:60)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:116)
at java.lang.ref.Finalizer.access$100(Finalizer.java:47)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:193)