安全处理org.xml.sax.SAXNotRecognizedException的解决方案导致在Tomcat中运行java.lang.IllegalStateException

Jav*_* Mr 7 java xml

我在接收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)
Run Code Online (Sandbox Code Playgroud)

挖掘我发现了这一点,所以解决方案可能是更改Tomcat设置的选项.

所以问题是:

  • 问题的根源是哪个?
  • 解决它的最佳方法是什么?
  • 改变Tomcat选项是一个好方法吗?怎么做的?

更新

使用Java 8运行它时会发生这种情况,恢复到Java 7可以正常工作.

小智 5

我遇到过类似的问题,当xerces jar和xercesImpl jar的版本存在很大差异时会出现这个问题.为了解决这个问题,我使用了xerces-2.9.0和xercesImpl-2.9.1,问题就消失了.


Nay*_*lia 5

我知道这是一个老问题.但只是更新它,如果它对其他人有任何帮助..我们最近有类似的问题,同时使用JBOSS 3.2.6升级到Java 8.问题的原因是旧的xercesImpl.jar.我们升级到xercesImol-2.9.1.jar并解决了问题.