Java StringBuilder.append引发ArrayStoreException

Java StringBuilder.append引发ArrayStoreException,java,Java,我们有一些代码执行var1+“\t”+var2。。。其中,var1和var2是String类型,但它生成以下堆栈跟踪: Caused by: java.lang.ArrayStoreException at java.lang.String.getChars(String.java:814) [rt.jar:1.8.0_40] at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:42

我们有一些代码执行var1+“\t”+var2。。。其中,var1和var2是String类型,但它生成以下堆栈跟踪:

Caused by: java.lang.ArrayStoreException
       at java.lang.String.getChars(String.java:814) [rt.jar:1.8.0_40]
       at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:422) [rt.jar:1.8.0_40]
       at java.lang.StringBuilder.append(StringBuilder.java:136) [rt.jar:1.8.0_40]
这里的操作系统是CentOS 6.6和Oracle Java 1.8.040

这怎么可能呢?String.getChars正在执行System.arraycopy(…)并传递类型为char[]的src和tgt变量

我能在网上找到的唯一一件与这个问题非常接近的东西是2013年发布的“Firefox for Android”的bug报告,该报告没有后续内容

这是触发调用的实际代码行 StringBuilder.append:

bw.write(
  id + "\t" + effectiveTime + "\t" + active + "\t" 
  + moduleId + "\t" + lhsId + "\t" + rhsId + "\t" 
  + roleGroup + "\t" + roleId + "\t" 
  + inferredTypeId + "\t" + someId); 

这里所有的变量都是String类型,bw是一个BufferedWriter(我认为这并不重要)。此外,在系统中目前还没有线程。不幸的是,我们无法在测试中复制错误,只能复制客户的错误。

您能发布实际代码和错误消息的开头(在“原因”之前的部分)吗?这是非常简单的
ArrayStoreException
javadoc清楚地说明了抛出此错误的原因。同样的问题:JDK bug?@JarrodRoberson:当它发生在JDK代码内部时,就不是那么简单了。如果没有实际的代码,我们不可能解决这个问题。