![](/img/trans.png)
[英]ClassCastException com.sun.org.apache.xerces.internal.dom.ElementNSImpl
[英]com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException parsing XML in POST (Java Servlet)
我正在开发一个使用POST发送信息的Servlet。 根据servlet的部署位置,我遇到了一个异常。 如果我在本地JBoss EAP 7上进行部署,它的工作原理就像一个魅力。 但是,如果我部署到远程服务器(也是JBoss EAP 7)中,则会出现以下错误:
码
final InputStream is = new ByteArrayInputStream(xml);
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
错误
<message>
Failed to load XML: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Byte no válido 2 de la secuencia UTF-8 de 4 bytes
~ôJ뢺ÞjX³jwh•ªkyø«™§¬‚†Ú~*æiÊ+x„ÅÇ©¶*'ºè©`zw«j¹Z~*æip(Ú½©Z </message>
有关更多信息,servlet具有jboss-deployment-structure.xml
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<dependencies>
<module name="javax.api"/>
<module name="org.apache.santuario.xmlsec"/>
<module name="org.apache.xerces" />
<system export="true">
<paths>
<path name="com/sun/org/apache/xerces/internal/dom"/>
</paths>
</system>
</dependencies>
</deployment>
</jboss-deployment-structure>
涉及xerces库的位置。 我不知道我的问题是否与该xml有关,或者我应该更改服务器/ servlet代码中的某些编码。 提前想一下。
Badulake,
您遇到的问题似乎是编码问题。 当您在将字节数组转换为Java字符串时未指定编码时,JVM将使用平台的默认编码。 在大多数情况下,默认编码为utf-8,效果很好。 但是,我已经看到许多操作系统安装,其中的编码仅仅是US-ASCII。
如果这是您的问题,则可以在Java命令行上将默认编码设置为JVM选项,也可以将平台上的编码更改为utf-8。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.