包org.w3c.dom可以从多个模块访问:<未命名>,java.xml

时间:2019-07-31 08:53:58

标签: java eclipse dom w3c java-12

我无法将org.w3c.dom.NodeList软件包导入Eclipse。它显示

  

可以从多个模块访问包org.w3c.dom:Eclipse中的<unnamed>,java.xml“错误消息。

请让我知道如何解决此问题?

Eclipse版本:

面向企业Java开发人员的Eclipse IDE。

版本:2019年6月(4.12.0)

内部版本号:20190614-1200

Java版本:

java版本“ 12.0.1” 2019-04-16

Java(TM)SE运行时环境(内部版本12.0.1 + 12)

Java HotSpot(TM)64位服务器VM(内部版本12.0.1 + 12,混合模式,共享)

10 个答案:

答案 0 :(得分:9)

由于有传递性xml-apis依赖性,我遇到了类似的问题。我使用Maven排除法解决了该问题:

<dependency>
    <groupId>org.apache.xmlgraphics</groupId>
    <artifactId>fop</artifactId>
    <version>0.95</version>

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

使用mvn dependency:tree查看谁带来了传递依赖,然后从中排除传递依赖。

答案 1 :(得分:4)

在我这边,我花了几个小时来了解我的问题,对这个问题真的很了解。
The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml

我想将项目从Java 8迁移到Java11。一些库问题。易于修复。但是在这个

  • 我试图创建module-info.java→这是最糟糕的。
  • 在我的操作系统上发现问题(debian 10) →即使Java 11是默认的JRE,也没有正确设置$ JAVA_HOME 专家构建。当我以为这只是一个Eclipse问题时,我最终认为这是一个全局编译问题。要解决此问题,我必须在~/.mavenrc

    中添加以下行

    JAVA_HOME=/usr/lib/jvm/default-java

  • 对Maven依赖关系的深入分析向我展示了对 xom .jar的第三级依赖关系,这会触发问题。依赖关系已链接到 Saxon HE 库→升级到版本9.9.X 已解决了此无聊的问题。

希望这对其他人有帮助。

答案 2 :(得分:2)

令人失望的是,我没有看到任何编译器标志来显示问题所在的jar 甚至-Xlint:module似乎也没有显示出任何有用的东西,而eclipse并没有说明这个问题

我一直在使用此脚本来查找org.w3c.dom的来源:

mvn dependency:copy-dependencies -DincludeScope=test -DoutputDirectory=deps
for i in deps/*.jar; do if unzip -l $i| grep -q org.w3c.dom; then echo $i; fi ; done

严格来说,您不必指定范围测试,因为它是默认设置,但由于您可能想使用compile来代替它,所以我将其包含在内

答案 3 :(得分:1)

只需打开configure构建路径,并验证作为项目一部分添加的所有模块,其中包含* *的类文件

org.w3c.dom

此错误,由于一个项目中添加了相同种类的多个API软件包,我们通常会遇到Java。

使用与您提到的版本相同的版本,不会遇到任何问题。因此,请确保没有重复的模块。

答案 4 :(得分:1)

在我的情况下,这是由于以下原因导致的:

  • JDK 11
  • dom4j 2.1.3

正如其他人指出的,根本原因是dom4j及其依赖项(例如pull-parser)使用了一些具有由JDK使用。

我必须删除javax.xml.parsers才能解决问题。只需使用JDK自己的XML API。

答案 5 :(得分:1)

对于Java 9和更高版本,请从类路径中删除org.w3c.dom jar文件,您已完成。顺便删除模块信息文件。您无需添加外部jar文件,该文件已包含在Java 9及更高版本的系统库中。

答案 6 :(得分:1)

就我而言,我使用的是:
JDK 14xmlbeans.jar 库。
我只需要删除 xmlbeans.jar 库,它确实解决了这个问题。

答案 7 :(得分:0)

org.w3c.dom 用于:

<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>2.4.0</version>
</dependency>

检查它是否通过其他依赖项以可传递方式导入。 排除相同

添加以下项的依赖关系:

<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>2.6.0</version>
</dependency>

答案 8 :(得分:0)

reference screenshot 没有什么对我有用,最后当我将版本更改为 1.8 时,它在 maven 构建后开始工作,

  1. 从项目转到项目属性或按 ALT + ENTER
  2. 转到 Java 编译器窗口
  3. 更改器版本为 1.8 (请参阅附图以供参考)

答案 9 :(得分:0)

如果您在一个简单的 Java 项目,而不是 Maven。 然后只需从库中移除 dom-jaxb jar

步骤: 右键单击项目 -> 属性 -> Java BuildPath -> 库选项卡 -> 选择 jars,例如 dom-2.3.0-jaxb-1.0.6(版本可能不同)-> 删除。

现在它可以正常构建了。

发生错误是因为“org.w3c.dom.Document”来自已删除的“dom-2.3.0-jaxb-1.0.6”jar 和 Java 的内置库。删除额外的 jar 将让它只来自 Java 的内置库。