JDK 10无法在Eclipse中导入javax.xml.name空间

yacmzcpb  于 2022-10-15  发布在  Eclipse
关注(0)|答案(6)|浏览(250)

这很奇怪。我正在将一个动态Web项目从Java 8迁移到Java 10。
我无法解析的最后一个依赖项是javax.xml.nampace.QName类。
您可以在所附的屏幕截图中看到,QName类存在于JRE系统库中,但IDE一直抱怨QName无法解析为类型。

klh5stk1

klh5stk11#

可能存在从其他依赖项拉入的重复依赖项。
在Eclipse中做
1.“导航->打开类型...
1.输入“java.xml.name space”。
1.如果您的(Open-)JDK有其他结果,则需要在以下步骤中删除这些结果。在我的例子中,它是XML-API
1.在eclipse中打开您的pom.xml,访问依赖层次选项卡,查看哪个依赖拉入了XML-API
1.在过滤器中输入“xml-apis”。在我的例子中,拉动XMLAPI的顶级依赖项是“ESAPI”
1.将XML-API从ESAPI依赖中排除:

<dependency>
    <groupId>org.owasp.esapi</groupId>
    <artifactId>esapi</artifactId>
    <version>2.2.0.0</version>

    <exclusions>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
    </exclusions>

</dependency>

1.右击您的项目,选择[Maven]->[更新项目...]。检查您的项目,然后单击确定。
就这样

izj3ouym

izj3ouym2#

从Java 8迁移到Java 11时,我遇到了相同的错误,并且我包含了对StAX-API 1.0-2库的显式依赖:

<dependency>
  <groupId>javax.xml.stream</groupId>
  <artifactId>stax-api</artifactId>
  <version>1.0-2</version>
</dependency>

并排除了对StAX-API 1.0.1库的任何过渡依赖:

...
    <exclusion>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
    </exclusion>
    ...

之后,我的IDE正确地找到了丢失的导入javax.xml.nampace.QName。
我希望这能帮到你。

piok6c0g

piok6c0g3#

尝试更改类路径上元素的顺序。JRE必须在Maven依赖项之前。这就解决了问题。
我的猜测是,Java 10编译器注意到您试图用JAR中的代码替换内部类(java.xml.namespace),它不喜欢这样。

tct7dpnv

tct7dpnv4#

通过从项目类路径(项目->属性->Java构建路径->库->类路径)中删除jsr173_api.jar解决了这个问题。当重新构建eclipse项目时,它会再次出现。

agyaoht7

agyaoht75#

这招奏效了!正在检查多类型Ctrl+Shift+T,删除不需要的类型。

xsuvu9jc

xsuvu9jc6#

我在使用JRE 11和Gradle 7.5时也有过同样的经历。如果它对任何人都有帮助,您可以排除XML-API,如下所示:

configurations {
    all {
        exclude group: 'xml-apis', module: 'xml-apis'
    }
}

相关问题