6

这很奇怪。我正在将一个动态 Web 项目从 Java 8 迁移到 Java 10。

我无法解决依赖关系的最后一件事是 javax.xml.namespace.QName 类。

您可以在附加的屏幕截图中看到,JRE 系统库中存在 QName 类,但 IDE 一直抱怨 QName 无法解析为类型。 截屏

4

5 回答 5

10

可能存在从其他一些依赖项中提取的重复依赖项。

在日食做

  1. “导航->打开类型...
  2. 输入“java.xml.namespace”。
  3. 如果您的 (Open-)JDK 之外还有其他结果,则需要在以下步骤中删除这些结果。就我而言,它是 xml-apis
  4. 在 Eclipse 中打开你的pom.xml ,然后访问“ Dependency Hierarchy ”选项卡以检查哪个依赖项拉入了 xml-apis
  5. 在过滤器中键入“xml-apis”。在我的情况下,拉 xml-apis 的顶级依赖项是“esapi”
  6. 从 esapi 依赖项中排除 xml-apis:

    <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>
    
  7. 右键单击您的项目并选择“Maven -> 更新项目...”。检查您的项目并单击确定。

而已

于 2020-04-23T12:51:18.450 回答
6

从 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.namespace.QName。

我希望这有帮助。

于 2018-12-27T11:50:58.053 回答
5

尝试更改类路径中元素的顺序。JRE 必须在 Maven 依赖项之前。这解决了这个问题。

我的猜测是 Java 10 编译器注意到您正在尝试java.xml.namespace用 JAR 中的代码替换内部类 ( ),但它不喜欢这样。

于 2019-02-06T10:27:17.227 回答
0

通过从项目类路径(项目 -> 属性 -> java 构建路径 -> 库 -> 类路径)中删除 jsr173_api.jar 来解决它。eclipse项目重建时再次出现。

于 2020-10-13T16:51:45.807 回答
0

这行得通!检查多种类型Ctrl++ ,删除不需要的。ShiftT

于 2021-04-14T15:27:13.463 回答