我在scala代码中使用了一个超级code库。
for (row <- readyData) { // tried foreach and map too
listWriter.write(row)
}其中readyData是Seq[java.util.List[String]],listWriter是CsvListWriter。我有时会
java.lang.StringIndexOutOfBoundsException: String index out of range: -2
at java.lang.String.<init>(String.java:197)
at java.lang.StringBuilder.toString(StringBuilder.java:405)
at org.supercsv.encoder.DefaultCsvEncoder.encode(DefaultCsvEncoder.java:93)
at org.supercsv.io.AbstractCsvWriter.escapeString(AbstractCsvWriter.java:102)
at org.supercsv.io.AbstractCsvWriter.writeRow(AbstractCsvWriter.java:196)
at org.supercsv.io.AbstractCsvWriter.writeRow(AbstractCsvWriter.java:146)
at org.supercsv.io.CsvListWriter.write(CsvListWriter.java:71)
at com.optrak.data.writing.CsvWriting$CsvFileWriter$$anonfun$write$1.apply(CsvWriting.scala:42)有时
java.lang.ArrayIndexOutOfBoundsException: -28
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:588)
at java.lang.StringBuilder.append(StringBuilder.java:214)
at org.supercsv.encoder.DefaultCsvEncoder.encode(DefaultCsvEncoder.java:81)
at org.supercsv.io.AbstractCsvWriter.escapeString(AbstractCsvWriter.java:102)
at org.supercsv.io.AbstractCsvWriter.writeRow(AbstractCsvWriter.java:196)
at org.supercsv.io.AbstractCsvWriter.writeRow(AbstractCsvWriter.java:146)
at org.supercsv.io.CsvListWriter.write(CsvListWriter.java:71)
at com.optrak.data.writing.CsvWriting$CsvFileWriter$$anonfun$write$1.apply(CsvWriting.scala:42)有不同的指数,通常是负的。最后显示的堆栈帧(省略了全部输出)指向上述代码的第2行。我实际上是在两个不同的specs2测试用例中使用代码。有时两者都失败,有时是一个。如果在两个测试用例中都有异常,则超出界限的索引是相同的,或者是不同的。是什么导致了这种看似随机的行为,我如何才能找到原因,并使其可预测?
发布于 2015-01-22 05:29:46
它看起来像是这只虫子的一个实例,在最新的版本(2.2.1)中是固定。
https://stackoverflow.com/questions/28081715
复制相似问题