首页 文章

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

提问于
浏览
2

我在解组课时收到此错误 . 我正在使用亚马逊的mTurks以及Spring,Maven和(惊喜,惊喜)一个xerces问题已经引起了人们的关注 .

我用不同的方式玩POM试图解决问题,但我似乎无法找出解决方案 .

我正在使用这里发现的mvenurks版本: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

我该如何解决这个问题?

2 回答

  • 0

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

    • 在eclipse编辑器中打开pom.xml并切换到"Dependency Hierarchy"选项卡

    • 在右上角的“过滤器”框中,键入“xerces”

    • 拉入xercesImpl的依赖项将播放在左侧的“Dependency Hierarchy”窗格中

    • 右键单击有问题的xercesImpl条目并选择"Exclude Maven Artifact..." . 这将更新您的pom,排除将解决冲突

    • 请务必按ctrl-s保存您的pom更改

    enter image description here

    这是原始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修改或全局设置

  • 5

    我无法找到让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>
    

相关问题