错误的行为node.getData()java7(64位)与java6(32位)

错误的行为node.getData()java7(64位)与java6(32位),java,dom,Java,Dom,我最近将一个项目从JDK1.6(32位)转换为JDK1.7(64位)。org.w3c.dom.Node出现了一个有趣的问题。下面的代码可以正确使用JDK1.6,但node.getData()有时只返回JDK1.7(64位)的数据子集。数据是base-64编码的。你知道为什么会这样吗 ... import org.w3c.dom.Text; import org.w3c.dom.Node; ... public byte[] getToken() { Text node = getFirs

我最近将一个项目从JDK1.6(32位)转换为JDK1.7(64位)。org.w3c.dom.Node出现了一个有趣的问题。下面的代码可以正确使用JDK1.6,但node.getData()有时只返回JDK1.7(64位)的数据子集。数据是base-64编码的。你知道为什么会这样吗

...
import org.w3c.dom.Text;
import org.w3c.dom.Node;
...
public byte[] getToken() {

   Text node = getFirstToken();

   if (node == null) {
       return null;
   }

   // This fails for JDK 1.7 64-bit sometimes and does
   // not return all the data for the element.
   // works fine for JDK 1.6 32-bit
   String nodeData = node.getData();

   ....

   return Base64.decode(nodeData);


}

可能相关的是,
getData()
的javadoc声明了DOMException-DOMSTRING\u SIZE\u ERR:当它返回的字符数超过实现平台上DOMSTRING变量中的字符数时引发的。我认为您忽略了很多代码。我真的不相信JVM库中有错误。我认为您可能有一个多线程错误(如果是多线程的)。特别是在复制byte[]时,多线程错误很容易产生。