DataInputStream UTFDataFormatException:围绕字节88根本原因的格式错误的输入

时间:2017-02-23 10:34:08

标签: java apache-poi utf

我已经开始在过去两周内在我的网络应用应用中看到此错误。服务器是linux redhat,最近没有修补。它已经持续了44天。也没有任何java或tomcat更改或发布(但tomcat确实每天被弹回一次)。我知道它看起来像某种charset / locale / encoding问题,但我现在不知道为什么它可能已经开始了。它最终与poi代码有关。

我正在使用poi-ooxml-3.10.1.jar,它引入了xmlbeans-2.6.0.jar。似乎错误是当xmlbeans初始化时,然后在从其编译的一个模式中读取一个2字节的“修改过的UTF-8”字符时失败。那是我到目前为止的地方。为什么这种情况可以在受控制的环境中开始发生,这让我很困惑。

导致此

的代码行
new SXSSFWorkbook(-1);

下面的一些片段:

at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:181)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:172)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:143)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:205)
...
Caused by: java.io.UTFDataFormatException: malformed input around byte 88
    at java.io.DataInputStream.readUTF(DataInputStream.java:634)
    at java.io.DataInputStream.readUTF(DataInputStream.java:564)
    at
org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$StringPool.readFrom(SchemaTypeSystemImpl.java:1050)

它在本地Windows机器上无法重现。

非常感谢您的关注和任何新想法。

1 个答案:

答案 0 :(得分:0)

这是某种腐败的构建。很奇怪。无论如何重建工作。