Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 随机变换异常,如何解决?_Java_Xml_Exception_Random - Fatal编程技术网

Java 随机变换异常,如何解决?

Java 随机变换异常,如何解决?,java,xml,exception,random,Java,Xml,Exception,Random,我的应用程序会写入大量XML数据,并随机写入以下代码的最后一行: // Prepare the DOM document for writing Source source = new DOMSource(node); // Prepare the output stream Result result = new StreamResult(stream); // Write the DOM document to the file Transformer xformer = Transfo

我的应用程序会写入大量XML数据,并随机写入以下代码的最后一行:

// Prepare the DOM document for writing
Source source = new DOMSource(node);

// Prepare the output stream
Result result = new StreamResult(stream);

// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);
…扔

javax.xml.transform.TransformerException: java.io.IOException: Detected invalid substitute UTF-16: da89 4f ?
(此外,我不知道为什么,但这个例外是vm用我的语言葡萄牙语提出的唯一一个例外,即“Detectado substituto UTF-16 inválido”,我已将其翻译为“Detectado invalid UTF-16 substitute”)

另一件奇怪的事是,我在文本中使用的是UTF-8,而不是UTF-16,我已经检查过了。而且,我相信,如果UTF是问题所在,它不会导致随机异常,因为我将获得相同数量的文本来转换为XML

这种异常很难重现,因为它并不总是发生,而且在将大量数据转换为XML时也会发生


知道这里发生了什么吗?

从输入流而不是读取器构造源代码,然后让XML解析器找出字符集。

我可以考虑的解决方法是让程序在失败时重新执行操作。由于很难复制,所以它不应该在一行中出现两次。

因此,如果多次转换同一文档,它甚至不会重复出现吗?java内部使用utf-16,字符也是一个无符号的16位int。在源代码中的某个地方,必须有一个没有代理的字符。Java 1.4也使用Unicode标准的3.0版,1.3使用2.1版。这些版本通常不支持补充字符。由于应支持1.5版本,因此使用版本4。您是在应用程序中生成源文件还是从外部文件生成源文件?每次启动应用程序时,我都会遇到类似的问题(尽管错误不同)。从控制台(shell脚本),但从Eclipse启动时没有问题。你正在启动应用程序。每次都是一样的?@Rediab我在使用Java 6,源代码在我的应用程序中,要转换为xml的源文本是一个外部文件(我在测试中总是使用相同的文件)。@FedericorListina我总是从Eclipse运行它。我不确定是否理解,我更新了问题中的源代码。如您所见,我正在使用DMOSource(Node)构建源代码。如果您指的是文本源文件,那么它是使用输入流构建的。当它失败时,您是否一直在记录?如果没有,您应该设置一个日志记录器来记录它发生故障时的情况,以及它发生故障时xml数据的外观。然后您可以将其与工作状态进行比较。@xil3这是一个很好的观点。对我来说,因为我使用的是相同的输入,看起来没有区别,但你的可能是个好主意。。一定有什么不同。。不管怎样,我不再做那个项目了。。因此,它将保留此变通方法作为解决方案。