繁体   English   中英

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

[英]JDK 10 cannot import javax.xml.namespace in Eclipse

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

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

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

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

在日食中做

  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 -> 更新项目...”。 检查您的项目,然后单击“确定”。

就是这样

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

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

我在从 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。

我希望这有帮助。

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

这有效! 检查多种类型Ctrl + Shift + T ,删除不需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM