gpt4 book ai didi

java - Itext Java 11 : Illegal reflective access by com. itextpdf.io.source.ByteBufferRandomAccessSource$1

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:52 26 4
gpt4 key购买 nike

最近升级到 Java 11 并开始执行回归检查。当前尝试调用 com.itextpdf.text.pdf.PdfReader.close 时出现非法反射访问错误。目前在 itext 版本 5.5.13 上,但也尝试在 itext 7.0.0 上遇到同样的问题。

有没有人对如何解决 Java-11 和 Itext 之间的兼容性问题有任何建议?

WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.itextpdf.io.source.ByteBufferRandomAccessSource$1 (file:...repository/com/itextpdf/io/7.0.0/io-7.0.0.jar) to method java.nio.DirectByteBuffer.cleaner() WARNING: Please consider reporting this to the maintainers of com.itextpdf.io.source.ByteBufferRandomAccessSource$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release

最佳答案

虽然我附议评论鼓励您调试代码并找到根本原因(然后提交拉取请求),或者如果您是具有支持契约(Contract)的客户(这将提高优先级),则在 iText Jira 中创建问题的问题),这是一个解决方法建议(我还没有测试过,但我很可能会奏效):

使用分别接受InputStreamOutputStreamPdfReaderPdfWriter 构造函数。在这种情况下,不应调用引起问题的代码。对于 iText 与您的文件系统交互的所有其他情况,情况相同 - 将所有内容包装到 InputStream/OutputStream 中,或处理 byte[]阵列。

所以这一行:

new PdfDocument(new PdfReader(inFilePath), new PdfWriter(outFilePath))

变成这个:

new PdfDocument(new PdfReader(new FileInputStream(inFilePath)), 
new PdfWriter(new FileOutputStream(outFilePath)))

您可能还想将流包装到 BufferedInputStream/BufferedOutputStream 中。

同样,在处理 PdfFontFactory 时,使用接受 byte[] 而不是 String 表示文件路径等的方法。

关于java - Itext Java 11 : Illegal reflective access by com. itextpdf.io.source.ByteBufferRandomAccessSource$1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com