一尘不染

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

javascript

接收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)

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

所以问题是:

问题的根源是什么?
最好的解决方法?
更改Tomcat选项的好方法吗?这是怎么做的?
更新资料

当使用Java 8运行它时,会发生这种情况,还原到Java 7可以正常进行。


阅读 639

收藏
2020-09-25

共2个答案

一尘不染

我曾经遇到过类似的问题,当xerces jar和xercesImpl jar的版本存在很大差异时,就会发生此问题。为了解决这个问题,我使用了xerces-2.9.0和xercesImpl-2.9.1,问题解决了。

2020-09-25
一尘不染

我知道这是一个老问题。但是,只要对它有帮助,就对其进行更新。.最近,在使用JBOSS 3.2.6升级到Java 8时,我们遇到了类似的问题。问题的原因是旧的xercesImpl.jar。我们升级到xercesImol-2.9.1.jar,此问题已解决。

2020-09-25