我在接收Xml并尝试解析时遇到此异常。在作为独立应用程序运行时,负责该代码的代码经过了充分测试。但是我现在将它集成到Tomcat中。
堆栈跟踪是:
java.lang.IllegalStateException: org.xml.sax.SAXNotRecognizedException: http://javax.xml.XMLConstants/feature/secure-processing
at com.sun.xml.internal.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:121)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:139)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:204)
挖掘我发现this,所以解决方案可能是更改Tomcat设置的选项。
所以问题是:
更新
当使用Java 8运行它时会发生这种情况,恢复到Java 7可以正常工作。
答案 0 :(得分:5)
我遇到过类似的问题,当xerces jar和xercesImpl jar版本存在很大差异时会出现此问题。为了解决这个问题,我使用了xerces-2.9.0和xercesImpl-2.9.1,问题就解决了。
答案 1 :(得分:5)
我知道这是一个老问题。但只是更新它,如果它对其他人有任何帮助.. 我们最近遇到了类似的问题,同时使用JBOSS 3.2.6升级到java 8。问题的原因是旧的xercesImpl.jar。我们升级到了xercesImol-2.9.1.jar,问题得到了解决。
答案 2 :(得分:1)
嗯,这对我有用: 在我的tomcat配置参数中添加以下内容: -Djavax.xml.parsers.SAXParserFactory =“ com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl”