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

时间:2018-10-09 10:44:18

标签: java eclipse java-10 javax.xml

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

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

在所附的屏幕快照中,您可以看到JRE系统库中存在QName类,但是IDE一直抱怨无法将QName解析为一种类型。 screen shot

5 个答案:

答案 0 :(得分:3)

可能从其他依赖项中提取了一个重复的依赖项。

在日食中

  1. “导航-> 打开类型...
  2. 输入“ java.xml.namespace”。
  3. 如果除了(Open-)JDK之外还有其他结果,则需要在以下步骤中将其删除。就我而言,它是xml-apis
  4. 在Eclipse中打开您的 pom.xml ,然后访问“ 依赖关系层次结构”标签,查看哪个依赖项正在xml-apis中提取
  5. 在过滤器中输入“ xml-apis”。在我的情况下,提取xml-apis的顶级依赖项是“ esapi”
  6. 从esapi依赖项中排除xml-api:

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

就这样

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

我希望这会有所帮助。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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