JDK 10 无法在 Eclipse 中导入 javax.xml.namespace

Iva*_*van 5 java eclipse javax.xml java-10

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

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

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

小智 8

我从 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>
Run Code Online (Sandbox Code Playgroud)

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

    ...
    <exclusion>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
    </exclusion>
    ...
Run Code Online (Sandbox Code Playgroud)

此后,我的 IDE 正确找到了丢失的导入 javax.xml.namespace.QName。

我希望这有帮助。


lil*_*nux 6

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

在日食中做

  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>
    
    Run Code Online (Sandbox Code Playgroud)
  7. 右键单击您的项目并选择“Maven -> 更新项目...”。检查您的项目,然后单击“确定”。

就是这样


Aar*_*lla 5

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

我的猜测是 Java 10 编译器注意到您试图java.xml.namespace用 JAR 中的代码替换内部类 ( ) 并且它不喜欢那样。