Usando JAXB con Java 11 +

Wednesday, October 28, 2020

Los módulos de “Java Architecture for XML Binding (JAXB) API” fueron eliminados  en la versión 11 de Java.  “JEP 320: Remove the Java EE and CORBA Modules” indica las razones de este cambio. Debido a esto al migrar de una versión anterior a Java 11 se deben agregar manualmente las dependencias del API y la implementación de JAXB. Dependiendo de la versión de Java EE o Jakarta EE las dependencias varían. 

(solución para java.lang.ClassNotFoundException: javax.xml.bind.JAXBException)

 

Jakarta EE 8: 


<!-- https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.3</version>
</dependency>


<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.3</version>
</dependency>

 

Jakarta EE9 :


<!-- https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>3.0.0</version>
</dependency>


<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>3.0.0</version>
</dependency>