JDK 10 cannot import javax.xml.namespace in Eclipse

Ivan picture Ivan · Oct 9, 2018 · Viewed 15.5k times · Source

It's very strange. I am moving a dynamic web project from Java 8 to Java 10.

The last thing I cannot get the dependency resolved is the javax.xml.namespace.QName class.

You can see in the attached screen shot, the QName class exist in JRE System Library, but the IDE keep complaining that QName cannot be resolved to a type. screen shot

Answer

lilalinux picture lilalinux · Apr 23, 2020

There probably is a duplicate dependency pulled in from some other dependency.

In eclipse do

  1. "Navivate -> Open Type..."
  2. Type in "java.xml.namespace".
  3. If there are other results than from your (Open-)JDK, these need to be removed in the following steps. In my case it was xml-apis
  4. Open your pom.xml in eclipse, and visit the "Dependency Hierarchy" tab to check which dependency was pulling in xml-apis
  5. Type "xml-apis" in the Filter. In my case the top level dependency that was pulling xml-apis was "esapi"
  6. exclude xml-apis from the esapi dependency:

    <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. Right click your Project and choose "Maven -> Update Project...". Check your project and click OK.

That's it