The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml

时光毁灭记忆、已成空白 提交于 2020-07-18 03:33:13

问题


I am unable to import org.w3c.dom.NodeList package to Eclipse. It is showing

The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml" error message in eclipse.

Please let me know how to fix this ?

Eclipse Version:

Eclipse IDE for Enterprise Java Developers.

Version: 2019-06 (4.12.0)

Build id: 20190614-1200

Java version:

java version "12.0.1" 2019-04-16

Java(TM) SE Runtime Environment (build 12.0.1+12)

Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)


回答1:


On my side, I've spent a few hours to understand my issue, really closed to this one.
The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml

I wanted to migrate a project from Java 8 to Java 11. A few library issues. Easy to fix. But on this one,

  • I've tried to create module-info.java → it was worst.
  • Find a issue on my OS (debian 10) → even if Java 11 was default JRE, $JAVA_HOME was not rightly set for maven build. And when I was thinking it was only an Eclipse issue, I finally consider that it was a global compilation problem. To fix this I had to add following line in ~/.mavenrc

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

  • Deep analysis on maven dependencies shows me a third-level dependency on xom.jar which trigger the issue. Dependency was linked to Saxon HE library → an upgrade to VERSION 9.9.X has resolved this boring problem.

Hope this will helps other people.




回答2:


I had a similar issue because of a transitive xml-apis dependency. I resolved it using a Maven exclusion:

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

Use mvn dependency:tree to see who brings in the transitive dependency, and then exclude that from there.




回答3:


Disappointingly I don't see any compiler flags to show what jar the problem is with Even -Xlint:module doesn't seem to show up anything useful and eclipse doesn't shed any light on the issue

Instead to find where org.w3c.dom comes from I've been using this script:

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

Strictly you don't have to specify the scope test as that's the default but I've included it as you might want to use compile instead




回答4:


Just open the configure build path and verify the modules which are all you have added as part of the project, which contains the class files as *

org.w3c.dom

This error, we usually gets in Java due to same kind of multiple API packages added in one project.

As, am using the same version as you mentioned, am not facing any issues., so just make sure that you don't have any duplicate modules.




回答5:


In my case, it was caused by combining the usage of:

  • JDK 11
  • dom4j 2.1.3 library

As pointed out by others, the root cause is that dom4j and its dependencies (e.g., pull-parser) use some packages names (javax.xml.parsers, org.w3c.dom) that have been used by the JDK.

I had to remove dom4j to solve the problem. Just use JDK's own XML api.



来源:https://stackoverflow.com/questions/57286825/the-package-org-w3c-dom-is-accessible-from-more-than-one-module-unnamed-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!