D. *_*ard 5 java itext itext7 java-11
最近升级到 Java 11 并开始执行回归检查。当前在尝试调用 时收到非法反射访问错误com.itextpdf.text.pdf.PdfReader.close。目前在 Itext 5.5.13 版上,但也在 itext 7.0.0 上尝试过并且遇到了同样的问题。
有没有人对如何解决 Java-11 和 Itext 之间的兼容性问题有任何建议?
警告:发生非法反射访问操作警告:com.itextpdf.io.source.ByteBufferRandomAccessSource$1 非法反射访问(文件:...repository/com/itextpdf/io/7.0.0/io-7.0.0.jar ) 方法 java.nio.DirectByteBuffer.cleaner() 警告:请考虑将此报告给 com.itextpdf.io.source.ByteBufferRandomAccessSource$1 的维护者 警告:使用 --illegal-access=warn 启用进一步非法反射访问的警告操作警告:在未来的版本中将拒绝所有非法访问操作
虽然我鼓励您调试代码并找到根本原因(然后提交拉取请求),或者如果您是拥有支持合同的客户在 iText Jira 中创建问题(这会提高问题的优先级) ),这是一个解决方法建议(我还没有测试过,但我可能会工作):
使用PdfReader和PdfWriter构造函数分别接受InputStream和OutputStream。在这种情况下,不应调用导致问题的代码。对于 iText 与文件系统交互的所有其他情况,同样的事情 - 将所有内容包装到InputStream/ 中OutputStream,或处理byte[]数组。
所以这一行:
new PdfDocument(new PdfReader(inFilePath), new PdfWriter(outFilePath))
Run Code Online (Sandbox Code Playgroud)
变成了这个:
new PdfDocument(new PdfReader(new FileInputStream(inFilePath)),
new PdfWriter(new FileOutputStream(outFilePath)))
Run Code Online (Sandbox Code Playgroud)
您可能还想将流包装到BufferedInputStream/ 中BufferedOutputStream。
同样,在处理 时PdfFontFactory,使用接受byte[]而不是String表示文件路径等的方法。
| 归档时间: |
|
| 查看次数: |
3660 次 |
| 最近记录: |