使用 java itext 和 IBM i RPG ILE 时引用#START NON-TRANSLATABLE 的异常
Exception referring # START NON-TRANSLATABLE while working with java itext and IBM i RPG ILE
使用 java itext 库,通过一个非常简单的测试。代码通过,但在关闭文档时,由于 java.lang.String.compareToIgnoreCase.
的空指针异常而失败
将 itext java 代码嵌入 IBM i RPGIV 代码时发生。尚不确定这是 JNI/RPGIV 转换问题(utf8 应转换为 EBCDIC 本机字符集)还是适当的 itext 问题。如果任何 itext 开发人员可以确认我是否是典型的 itext 问题,这将有所帮助,特别是对 START NON-TRANSLATABLE 的引用。
Exception in thread "main"# START
NON-TRANSLATABLEjava.lang.NullPointerException at
java.lang.String.compareToIgnoreCase(String.java:603)
at
java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:94)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:152)
at
com.itextpdf.text.pdf.OutputStreamCounter.flush(OutputStreamCounter.java:89)
at com.itextpdf.text.DocWriter.close(DocWriter.java:233)
at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1341)
at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:901)
at com.itextpdf.text.Document.close(Document.java:415)
这是我的 Plex Action 图代码:
文档角色扮演游戏原型:
PdfWriter RPG原型:
方法Document.open:
Class 元素段落:
段落构造器RPG原型
元素接口(段落实现元素):
添加段落到文档方法:
文档关闭方法:
这些是我的 Plex API 实现的:
创建文档:
创建 PdfWriter:
打开文档:
创建段落:
向文档添加段落
关闭文档:
最后,我 java 使用这些值:
类路径 = 库的完整列表(itext + Apache POI,所有 运行)
java_home = java 7
的路径
在 IBM i 上以普通方式测试 itext 后,终于解决了 java。它今天有效,并为我提供了定位嵌入式 itext 问题的方向。是 PdfWriter class 使用不当。我把一个EBCDIC字符串转换成jstring,然后赋值一个FileOutputStream对象,没有转换。从 jstring 获取 FileOutputStream 对象将正确的文件对象传递给 PdfWriter。该过程现在如下所示:
/free
PhraseString = new_String( %trim(&(1:)));
pdfFilePath = new_FileOutputStream(PhraseString);
pdfWriter = get_PdfWriter( pdfDocument: pdfFilePath);
/end-free
使用 java itext 库,通过一个非常简单的测试。代码通过,但在关闭文档时,由于 java.lang.String.compareToIgnoreCase.
的空指针异常而失败将 itext java 代码嵌入 IBM i RPGIV 代码时发生。尚不确定这是 JNI/RPGIV 转换问题(utf8 应转换为 EBCDIC 本机字符集)还是适当的 itext 问题。如果任何 itext 开发人员可以确认我是否是典型的 itext 问题,这将有所帮助,特别是对 START NON-TRANSLATABLE 的引用。
Exception in thread "main"# START NON-TRANSLATABLEjava.lang.NullPointerException at java.lang.String.compareToIgnoreCase(String.java:603)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:94) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:152)
at com.itextpdf.text.pdf.OutputStreamCounter.flush(OutputStreamCounter.java:89) at com.itextpdf.text.DocWriter.close(DocWriter.java:233)
at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1341)
at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:901)
at com.itextpdf.text.Document.close(Document.java:415)
这是我的 Plex Action 图代码:
文档角色扮演游戏原型:
PdfWriter RPG原型:
这些是我的 Plex API 实现的:
创建文档:
创建 PdfWriter:
打开文档:
创建段落:
向文档添加段落
关闭文档:
最后,我 java 使用这些值: 类路径 = 库的完整列表(itext + Apache POI,所有 运行) java_home = java 7
的路径在 IBM i 上以普通方式测试 itext 后,终于解决了 java。它今天有效,并为我提供了定位嵌入式 itext 问题的方向。是 PdfWriter class 使用不当。我把一个EBCDIC字符串转换成jstring,然后赋值一个FileOutputStream对象,没有转换。从 jstring 获取 FileOutputStream 对象将正确的文件对象传递给 PdfWriter。该过程现在如下所示:
/free
PhraseString = new_String( %trim(&(1:)));
pdfFilePath = new_FileOutputStream(PhraseString);
pdfWriter = get_PdfWriter( pdfDocument: pdfFilePath);
/end-free