SAXNotRecognizedException:功能 'http://javax.xml.XMLConstants/feature/secure-processing' 无法识别

SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' not recognized

我在解组 class 时收到此错误。我正在使用 Amazon 的 mTurks 以及 Spring、Maven 和(惊喜,惊喜)一个 xerces 问题引起了它的注意。

我以多种不同的方式使用 POM 来尝试解决问题,但我似乎无法找出解决方案。

我正在使用在这里找到的 mturks 的 mavenized 版本: https://github.com/tc/java-aws-mturk

我已经明确地从 mturks 中排除了 xerces 的东西:

<dependency>
    <groupId>com.amazon</groupId>
    <artifactId>java-aws-mturk</artifactId>
    <version>1.2.2</version>
    <exclusions>
        <exclusion>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
        </exclusion>
        <exclusion>
            <groupId>apache-xerces</groupId>
            <artifactId>xercesImpl</artifactId>
        </exclusion>
        <exclusion>
            <groupId>apache-xerces</groupId>
            <artifactId>resolver</artifactId>
        </exclusion>
        <exclusion>
            <groupId>apache-xerces</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
    </exclusions>
</dependency>

并明确包含 xerces-impl 和 xml-api 依赖项:

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0</version>
</dependency>
<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>

我已经尝试了 xercesImpl 版本 2.9.1、2.11.0 和 xml-apis 版本 1.4.01、2.0.2 的所有四种组合都无济于事。

xercesImpl 2.11.0 和 xml-api 2.0.2 导致不同的错误:

java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

我该如何解决这个问题?

我无法找到使 mturks 1.2.2 正常工作的方法。但是,使用不同的版本 (1.6.2) 解决了这个问题。

我更新的 pom 现在看起来像这样:

<repository>
    <id>clojars.org</id>
    <url>http://clojars.org/repo</url>
</repository>
...
<dependency>
    <groupId>org.clojars.zaxtax</groupId>
    <artifactId>java-aws-mturk</artifactId>
    <version>1.6.2</version>
    <exclusions>
        <exclusion>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
        </exclusion>
    </exclusions>
</dependency>

这不是特定于 mturks,但这是在 eclipse 中查找 xerces 冲突以解决问题的一般方法。

  1. 在 Eclipse 编辑器中打开 pom.xml 并切换到“依赖层次结构”选项卡

  2. 在右上角的“过滤器”框中,输入“xerces”

  3. 引入 xercesImpl 的依赖项将显示在左侧的“依赖项层次结构”窗格中

  4. 右键单击有问题的 xercesImpl 条目并 select“排除 Maven 工件...”。这将使用排除项更新您的 pom,从而解决冲突

  5. 一定要按 ctrl-s 保存您的 pom 更改

这是原始 pom.xml 前后的示例(eclipse 在上述步骤中为您完成了此操作:

之前

    <dependency>
      <groupId>junit-addons</groupId>
      <artifactId>junit-addons</artifactId>
      <version>1.4</version>
      <scope>test</scope>
    </dependency>

之后

    <dependency>
      <groupId>junit-addons</groupId>
      <artifactId>junit-addons</artifactId>
      <version>1.4</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
            <artifactId>xercesImpl</artifactId>
            <groupId>xerces</groupId>
        </exclusion>
      </exclusions>
    </dependency>

通过这个简单的更改,您无需借助 JRE 修改或全局设置即可避免“由于限制设置而不允许访问...”错误