Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 如何在JAXB中调试封送处理?_Java_Jaxb_Jax Ws_Unmarshalling - Fatal编程技术网

Java 如何在JAXB中调试封送处理?

Java 如何在JAXB中调试封送处理?,java,jaxb,jax-ws,unmarshalling,Java,Jaxb,Jax Ws,Unmarshalling,在封送处理过程中,我遇到了下一个异常 Exception in thread "main" com.sun.xml.internal.ws.encoding.soap.DeserializationException: Failed to read a response: javax.xml.bind.UnmarshalException - with linked exception: [javax.xml.stream.XMLStreamException: ParseError at [

在封送处理过程中,我遇到了下一个异常

Exception in thread "main" com.sun.xml.internal.ws.encoding.soap.DeserializationException: Failed to read a response: javax.xml.bind.UnmarshalException
 - with linked exception:
[javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1127]
Message: XML document structures must start and end within the same entity.]

所以我想看看[row,col]:[11127]所在的xml。请建议。

我建议您在XMLStreamException上创建异常断点。至少eclipse允许这样做。因此,您将能够看到引发异常的点。也许会有帮助


顺便说一句,我不确定1127是完全错误的。首先检查(以防万一)你在这个职位上没有违法行为。其次,检查它是否不是文件的第1127个字符。例如,如果文件是在Unix上生成的,其中行分隔符是\n,但您在Windows上运行的代码中行分隔符是\r\n,则系统可能无法识别换行符,因此它认为您的XML格式是非常长的单行。

您似乎正在反序列化SOAP消息。您可以通过向JVM选项添加
-Djavax.net.debug=all
来启用HTTP调试。这将转储传入的消息。查看输入后,确保开始和结束标记匹配(根据错误消息的第二部分)。

通过在JVM选项中指定-Djaxb.debug=true,可以在控制台中看到JAXB调试输出。 此外,您可能希望在解组程序上设置事件处理程序:
unmarshaller.setEventHandler(新的javax.xml.bind.helpers.DefaultValidationEventHandler())

-Djavax.net.debug=all
会产生大量不必要的垃圾。
JAXBContext context = JAXBContext.newInstance(jaxbObjectClass);
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler());