接收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可以正常进行。
我曾经遇到过类似的问题,当xerces jar和xercesImpl jar的版本存在很大差异时,就会发生此问题。为了解决这个问题,我使用了xerces-2.9.0和xercesImpl-2.9.1,问题解决了。
我知道这是一个老问题。但是,只要对它有帮助,就对其进行更新。.最近,在使用JBOSS 3.2.6升级到Java 8时,我们遇到了类似的问题。问题的原因是旧的xercesImpl.jar。我们升级到xercesImol-2.9.1.jar,此问题已解决。