【问题标题】:Solution for secure-processing org.xml.sax.SAXNotRecognizedException causing java.lang.IllegalStateException running inside Tomcat安全处理 org.xml.sax.SAXNotRecognizedException 导致 java.lang.IllegalStateException 在 Tomcat 内部运行的解决方案
【发布时间】:2014-07-20 02:42:17
【问题描述】:

我在接收 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 设置的选项。

所以问题是:

  • 问题的根源在哪里?
  • 最好的解决方法?
  • 是更改 Tomcat 选项的好方法吗?这是怎么做到的?

更新

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

【问题讨论】:

标签: java xml


【解决方案1】:

嗯,这对我有用: 在我的 tomcat 配置参数中添加了以下内容: -Djavax.xml.parsers.SAXParserFactory="com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我不可能在 maven repo 上找到 xerces 2.9.0?这是我发现的两个依赖项。 : a) groupId:xerces - artifactId:xerces - version:2.4.0 和 b) groupId:xerces - artifactId:xercesImpl - version:2.9.1。我在这里有什么遗漏吗?另外,我只在 java 8 上遇到这个问题。对于 java 7 或 java 6,它不存在。
      • @MiKu:使用 java-8,最新版本的 xerces(即 2.11.0)必须工作。
      猜你喜欢
      • 2014-10-27
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 2023-02-20
      相关资源
      最近更新 更多