Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JDK 10 cannot import javax.xml.namespace in Eclipse

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

like image 307
Ivan Avatar asked Oct 09 '18 10:10

Ivan


Video Answer


2 Answers

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

like image 194
lilalinux Avatar answered Sep 25 '22 12:09

lilalinux


I had the same error moving from Java 8 to Java 11, and I included an explicit dependency on the library stax-api 1.0-2:

<dependency>
  <groupId>javax.xml.stream</groupId>
  <artifactId>stax-api</artifactId>
  <version>1.0-2</version>
</dependency>

and excluded any transitional dependency on the library stax-api 1.0.1:

    ...
    <exclusion>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
    </exclusion>
    ...

After this, my IDE found the lost import javax.xml.namespace.QName correctly.

I hope this helps.

like image 44
Wagner Lopes Avatar answered Sep 25 '22 12:09

Wagner Lopes