My parent pom has spring boot version 3.3.2 and java 17, I am trying to migrate all javax to jakarta namespace.
If I downgrade my glassfish jaxb-runtime dependency to 2.x it works fine, but that dependency is not compatible with Java17 and I get different issues.
But below above pom.xml I get below error during xsdtojava step:
[ERROR] C:RepositoriesJava17mso-coremsomso-api-handlersmso-api-handler-att-servicestargetnull [-1:-1]: Failed to create model
com.sun.istack.SAXParseException2; Failed to create model
at com.sun.tools.xjc.ErrorReceiver.error(ErrorReceiver.java:64)
at org.apache.cxf.maven_plugin.XSDToJavaRunner.loadModel(XSDToJavaRunner.java:226)
at org.apache.cxf.maven_plugin.XSDToJavaRunner.run(XSDToJavaRunner.java:174)
at org.apache.cxf.maven_plugin.XSDToJavaRunner.main(XSDToJavaRunner.java:360)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.cxf.maven_plugin.XSDToJavaRunner.loadModel(XSDToJavaRunner.java:224)
... 2 more
Caused by: java.lang.ExceptionInInitializerError
at org.jvnet.jaxb2_commons.plugin.inheritance.Customizations.<clinit>(Customizations.java:31)
at org.jvnet.jaxb2_commons.plugin.inheritance.InheritancePlugin.getCustomizationElementNames(InheritancePlugin.java:50)
at org.jvnet.jaxb2_commons.plugin.AbstractPlugin.getCustomizationURIs(AbstractPlugin.java:97)
at com.sun.tools.xjc.reader.AbstractExtensionBindingChecker.<init>(AbstractExtensionBindingChecker.java:71)
at com.sun.tools.xjc.reader.ExtensionBindingChecker.<init>(ExtensionBindingChecker.java:51)
at com.sun.tools.xjc.ModelLoader$XMLSchemaParser.parse(ModelLoader.java:205)
at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.parseEntity(NGCCRuntimeEx.java:351)
at com.sun.xml.xsom.impl.parser.ParserContext.parse(ParserContext.java:98)
at com.sun.xml.xsom.impl.parser.ParserContext.<init>(ParserContext.java:74)
at com.sun.xml.xsom.parser.XSOMParser.<init>(XSOMParser.java:83)
at com.sun.tools.xjc.ModelLoader.createXSOMParser(ModelLoader.java:378)
at com.sun.tools.xjc.ModelLoader.createXSOMSpeculative(ModelLoader.java:451)
at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:310)
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:121)
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:76)
... 7 more
Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:168)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:355)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:508)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:465)
at org.jvnet.jaxb2_commons.plugin.inheritance.Customizations.<clinit>(Customizations.java:28)
... 21 more
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:165)
... 25 more
[ERROR] C:RepositoriesJava17mso-coremsomso-api-handlersmso-api-handler-att-servicessrcmainresourcesxsdattCanopiServiceRequestV1.xsd [0:0]: Failed to create model
My CanopiServiceRequestV1.xsd looks like this:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://ecomp.att.com/mso/request/types/v1"
xmlns:msoservtypes="http://ecomp.att.com/mso/service/instance/types/v1"
targetNamespace="http://ecomp.att.com/mso/request/types/v1" elementFormDefault="qualified">
<import namespace="http://ecomp.att.com/mso/service/instance/types/v1" schemaLocation="MsoServiceInstanceTypesV1.xsd"/>
<complexType name="vpnData">
<sequence>
<element name="lppVpnId" type="string"/>
<element name="vpnService" type="string"/>
<element name="vpnRt" type="string"/>
<element name="vpnRegion" type="string"/>
</sequence>
</complexType>
<complexType name="requestParameters">
<sequence>
<element name="serviceType" type="string"/>
<element name="lppCustomerId" type="string"/>
<element name="vpnData" type="ns1:vpnData"/>
</sequence>
</complexType>
<element name="requestDetails">
<complexType>
<sequence>
<element name="serviceInfo" type="msoservtypes:serviceInfo" minOccurs="0"/>
<element name="requestInfo" type="msoservtypes:requestInfo" minOccurs="0"/>
<element name="subscriberInfo" type="msoservtypes:subscriberInfo" minOccurs="0"/>
<element name="cloudConfiguration" type="msoservtypes:cloudConfiguration" minOccurs="0"/>
<element name="requestParameters" type="ns1:requestParameters"/>
</sequence>
</complexType>
</element>
<element name="serviceInstanceRequestReference" type="msoservtypes:serviceInstanceRequestReference"/>
<element name="asyncRequestStatus" type="msoservtypes:asyncRequestStatus"/>
<element name="requestError" type="msoservtypes:requestError"/>
</schema>
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.att.ecomp.mso</groupId>
<artifactId>mso-api-handlers</artifactId>
<version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>mso-api-handler-att-services</artifactId>
<name>mso-api-handler-att-services</name>
<description>ECOMP SO API Handler ATT Services</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<json4s-jackson-version>3.2.4</json4s-jackson-version>
<json4s-core-version>3.0.0</json4s-core-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2-jakarta</artifactId>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
</dependency>
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.json4s</groupId>
<artifactId>json4s-jackson_2.9.1-1</artifactId>
<version>${json4s-jackson-version}</version>
</dependency>
<dependency>
<groupId>org.json4s</groupId>
<artifactId>json4s-core_2.9.2</artifactId>
<version>${json4s-core-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-providers</artifactId>
<version>2.11.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>pl.pragmatists</groupId>
<artifactId>JUnitParams</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.wiremock</groupId>
<artifactId>wiremock-standalone</artifactId>
<version>3.9.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.onap.sdc.sdc-distribution-client</groupId>
<artifactId>sdc-distribution-client</artifactId>
</dependency>
<dependency>
<groupId>com.att.ecomp.mso</groupId>
<artifactId>mso-api-handler-common-att-services</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.so</groupId>
<artifactId>mso-api-handler-infra</artifactId>
<version>${project.version}</version>
<classifier>${originalClassifier}</classifier>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-wiremock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-jersey2</artifactId>
<version>1.6.13</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>org.onap.so</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.wix</groupId>
<artifactId>wix-embedded-mysql</artifactId>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-jdbc-template</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>default-test</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<include>**/AllTestsTestSuite.java</include>
</includes>
</configuration>
</execution>
<execution>
<id>groovy</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>true</skip>
<includes>
<include>%regex[.*scripts.*]</include>
</includes>
</configuration>
</execution>
</executions>
<configuration>
<parallel>suites</parallel>
</configuration>
</plugin>
<plugin>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-maven-plugin-jakarta</artifactId>
<configuration>
<resourcePackages>
<resourcePackage>com.att.ecomp.mso.apihandler</resourcePackage>
<resourcePackage>com.att.ecomp.mso.apihandler.service.system.am</resourcePackage>
<resourcePackage>com.att.ecomp.mso.apihandler.service.dequeue</resourcePackage>
<resourcePackage>com.att.ecomp.mso.apihandler.service.system</resourcePackage>
<resourcePackage>com.att.ecomp.mso.apihandler.service.system.ccd</resourcePackage>
<resourcePackage>com.att.ecomp.mso.apihandler.service.system.omx</resourcePackage>
</resourcePackages>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.att.ecomp.mso.apihandler.ATTServicesApiHandlerApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>4.0.1</version>
<configuration>
<sourceRoot>${basedir}/target/generated</sourceRoot>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:4.0.1</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<xsdOptions>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/CanopiServiceRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.anapapihandler.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/CanopiServiceRequestV2.xsd</xsd>
<packagename>com.att.ecomp.mso.anap.apihandler.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/MsoRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.anapapihandler.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/QueryResponses.xsd</xsd>
<packagename>com.att.ecomp.mso.anapapihandler.beans.queryresponse</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/MsoRequestQueryResponseV1.xsd</xsd>
<packagename>com.att.ecomp.mso.anapapihandler.beans.query.requestresponse</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/Layer3ServiceActivateRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.layer3.serviceactivate.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/GetLayer3ServiceDetailsRequest1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.layer3.details.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/ChangeLayer3ServiceActivateRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.changelayer3activate.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/Layer3TestAndTurnUpV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.layer3.testandturnup.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/ChangeLayer3ServiceProvRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.changelayer3service.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/DisconnectLayer3ServiceRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.disconnectlayer3.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/VnfActivateRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.vnfactivate.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/VnfDesignRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.vnfdesign.beans</packagename>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/att/VnfRemoveRequestV1.xsd</xsd>
<packagename>com.att.ecomp.mso.apihandler.vnfremove.beans</packagename>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>extract-docker-file</id>
<configuration>
<skip>false</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<executions>
<execution>
<id>start</id>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<versionRange>[4.0.1,)</versionRange>
<goals>
<goal>xsdtojava</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>unpack</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<packaging>jar</packaging>
</project>
My maven dependency tree having jaxb2 dependency:-
+- com.att.ecomp.mso:att-common:jar:1.8.0-SNAPSHOT:compile
[INFO] | +- org.onap.so:common:jar:1.8.0-SNAPSHOT:compile
[INFO] | +- org.onap.aai.schema-service:aai-schema:jar:1.9.7:compile
[INFO] | | +- org.onap.aai.schema-service:aai-annotations:jar:1.9.7:compile
[INFO] | | - org.jvnet.jaxb2_commons:jaxb2-basics:jar:0.11.1:compile
[INFO] | | +- org.jvnet.jaxb2_commons:jaxb2-basics-runtime:jar:0.11.1:compile
[INFO] | | +- org.jvnet.jaxb2_commons:jaxb2-basics-tools:jar:0.11.1:compile
[INFO] | | - com.google.code.javaparser:javaparser:jar:1.0.11:compile
4
You can’t move to jakarta because org.onap.aai.schema-service:aai-schema:jar:1.9.7
depends on jaxb-2.3 see pom here.
Moreover, they import the wrong runtime dependency (it should be jaxb2-basics-runtime
and not jaxb2-basics
itself which should only be used in the xsd -> java processing)
You can try asking the developer of the module to move to jakarta or propose a jakarta-based dependency so you can add as project dependency.