2016-08-16 37 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の親子関係に設定しています。 IBM jreでstaxを実装する方法

答えて

1

ご返信いただきありがとうございます。 ここに解決策があります:私は自分のプロジェクトにstax2-apiとwoodstox-core-asl jarを追加し、プロジェクトのsystem.propertiesのプロパティの下に設定しました。

2

IBM JREにはSTAXが含まれており、Java SEの一部として必要です。

writeAttributeのJavadocは、まだプレフィックスにバインドされていない名前空間を持つ属性を記述している場合にこの例外が発生することが予想されます。あなたが書こうとしている文書に関する詳細がなければ、私はそれが本当であるかどうかを確認することはできません。

名前空間を使用する前に、名前空間の接頭辞を設定するように書いているドキュメントを修正するか、出力ファクトリのjavax.xml.stream.isRepairingNamespacesプロパティを作成する前にtrueに設定する必要がありますあなたのXMLStreamWriter。

のJavadocの例を以下に示します。

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

これはTomcatのではなく、自由に働くだろう、なぜ私にはわかりません。 IBMのSTAX実装の詳細については、Knowledge Centerを参照してください。

関連する問題