2016-08-16 59 views
1

我的项目可以很好地与tomcat服务器配合工作,现在我正试图在WebSphere Liberty Profile(WLP)上运行项目,但是它给了我stax实现的以下错误XMLStreamException:名称空间URI尚未绑定到前缀,IBM jre

 javax.xml.stream.XMLStreamException: The namespace URI "http://www.example.com/ns1" has not bound to a prefix. 
    at com.ibm.xml.xlxp.api.stax.msg.StAXMessageProvider.throwXMLStreamException(StAXMessageProvider.java:59) 
    at com.ibm.xml.xlxp.api.stax.XMLStreamWriterBase.writeAttribute(XMLStreamWriterBase.java:464) 
    at com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl$XMLStreamWriterProxy.writeAttribute(XMLOutputFactoryImpl.java:157) 
    at org.apache.olingo.odata2.core.ep.producer.XmlMetadataProducer.writeAnnotationAttributes(XmlMetadataProducer.java:599) 
    at org.apache.olingo.odata2.core.ep.producer.XmlMetadataProducer.writeMetadata(XmlMetadataProducer.java:134) 

我已经在WLP中将classloader策略设置为parent-last。 如何在IBM中实现stax jer

回答

1

问题已解决,谢谢您的回复。 这里是解决方案:我已经加入stax2的API和woodstox核-ASL的jar文件放进我的项目,在我的项目system.properties设置如下属性

javax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory 
javax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory 
2

IBM JRE包含STAX,它是Java SE的一部分。

Javadoc for writeAttribute表明,如果您正在编写一个名称空间尚未绑定到前缀的属性,则会出现此异常。如果没有关于您打算编写的文档的更多信息,我无法确认是否属于这种情况。

如果是这样的话,您可能需要修正你写的,使得它在创建之前设置的命名空间的前缀,你使用的命名空间之前,或设置你的输出厂javax.xml.stream.isRepairingNamespaces属性true文档你的XMLStreamWriter。

继在Javadoc的例子:

xmlOutputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, new Boolean(true));

我不知道为什么这会工作在Tomcat而不是自由。有关IBM STAX实现的更多信息,请参阅Knowledge Center

相关问题