首页 > 解决方案 > BeanIO 项目阅读器评论需要 reader.markSupported() 返回 true

问题描述

我的 beanioItemReader 映射定义如下 -

<stream name="DTA" format="fixedlength">
    <parser>
        <property name="comments" value="#" />
    </parser>
...

并得到例外 -

jberet - WARN  JBERET000001: Failed to run batchlet org.jberet.job.model.RefArtifact@67af20cb
java.lang.IllegalArgumentException: Comments require reader.markSupported() to return true
    at org.beanio.stream.util.CommentReader.<init>(CommentReader.java:61) ~[beanio-2.1.0.jar:2.1.0]
    at org.beanio.stream.fixedlength.FixedLengthReader.<init>(FixedLengthReader.java:101) ~[beanio-2.1.0.jar:2.1.0]

我没有看到任何记录在案的属性可以传递给 beanioItemReader 以征求意见。我可以/如何让评论起作用吗?

标签: jberet

解决方案


BeanIO 映射文件的位置在BeanIOItemReaderWriterBase类中配置,因此映射文件中指定的任何配置都将传递给底层 BeanIO 读取器。

从堆栈跟踪来看,它似乎在抱怨底层阅读器不支持标记(reader.markSupported返回 false)。但是 JBeret BeanIOItemReader类使用了BufferedReader,它确实支持标记。


推荐阅读