jaxb2-maven-plugin icon indicating copy to clipboard operation
jaxb2-maven-plugin copied to clipboard

jaxb2-maven-plugin Jakarta

Open ImanGharib opened this issue 5 years ago • 11 comments

I am trying to migrate to java 11 and jakarta. I need to create java classes from XSD Files as I did in Java EE. I have changed all jaxb imports into jakarta. But I can not make jaxb2 to create classes with jakarta namspace instead of jaxb. If I add no dependencies to the plugin part then the class will be created with javax namspace, which I do not need and the imorts can not be found anyway with error java: package javax.xml.bind.annotation does not exist. The generated class is:

`package org.ttt.raw.reporting.core.fussnote; import javax.xml.bind.annotation.XmlAccessType; // I need to have jakarta.xml.bind ... here! import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; /**

  • Java-Klasse für FussnoteType complex type.

  • Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.

  • <complexType name="FussnoteType">
  • <complexContent>
  • &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
    
  •   &lt;sequence&gt;
    
  •     &lt;element name="FussnoteNummer" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
    
  •     &lt;element name="FussnoteText" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
    
  •   &lt;/sequence&gt;
    
  • &lt;/restriction&gt;
    
  • </complexContent>
  • </complexType>

*/ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "FussnoteType", propOrder = { "fussnoteNummer", "fussnoteText" }) public class FussnoteType {

@XmlElement(name = "FussnoteNummer", required = true)
protected String fussnoteNummer;
@XmlElement(name = "FussnoteText", required = true)
protected String fussnoteText;

/**
 * Ruft den Wert der fussnoteNummer-Eigenschaft ab.
 * 
 * @return
 *     possible object is
 *     {@link String }
 *     
 */
public String getFussnoteNummer() {
    return fussnoteNummer;
}

/**
 * Legt den Wert der fussnoteNummer-Eigenschaft fest.
 * 
 * @param value
 *     allowed object is
 *     {@link String }
 *     
 */
public void setFussnoteNummer(String value) {
    this.fussnoteNummer = value;
}

/**
 * Ruft den Wert der fussnoteText-Eigenschaft ab.
 * 
 * @return
 *     possible object is
 *     {@link String }
 *     
 */
public String getFussnoteText() {
    return fussnoteText;
}

/**
 * Legt den Wert der fussnoteText-Eigenschaft fest.
 * 
 * @param value
 *     allowed object is
 *     {@link String }
 *     
 */
public void setFussnoteText(String value) {
    this.fussnoteText = value;
}

} If I addjakarta.xml.bindthen the FussnoteType class will not be generated at all an I get these errors:[ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.5.0:xjc (xjc) on project raw-reporting-core: A Plug-in could not be loaded: "java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: com.sun.tools.xjc.addon.accessors.PluginImpl Unable to get public no-arg constructor [ERROR] at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:581) [ERROR] at java.base/java.util.ServiceLoader.getConstructor(ServiceLoader.java:672) [ERROR] at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1232) [ERROR] at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264) [ERROR] at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299) [ERROR] at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384) [ERROR] at com.sun.tools.xjc.Options.findServices(Options.java:979) [ERROR] at com.sun.tools.xjc.Options.getAllPlugins(Options.java:355) [ERROR] at com.sun.tools.xjc.Options.parseArgument(Options.java:694) [ERROR] at com.sun.tools.xjc.Driver$OptionsEx.parseArgument(Driver.java:502) [ERROR] at com.sun.tools.xjc.Options.parseArguments(Options.java:827) [ERROR] at com.sun.tools.xjc.Driver.run(Driver.java:231) [ERROR] at org.codehaus.mojo.jaxb2.javageneration.AbstractJavaGeneratorMojo.performExecution(AbstractJavaGeneratorMojo.java:475) [ERROR] at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.execute(AbstractJaxbMojo.java:337) [ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) [ERROR] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192) [ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105) [ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957) [ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289) [ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:193) [ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [ERROR] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [ERROR] at java.base/java.lang.reflect.Method.invoke(Method.java:566) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347) [ERROR] at org.codehaus.classworlds.Launcher.main(Launcher.java:47) [ERROR] Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlAccessType [ERROR] at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) [ERROR] at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137) [ERROR] at java.base/java.lang.Class.getConstructor0(Class.java:3342) [ERROR] at java.base/java.lang.Class.getConstructor(Class.java:2151) [ERROR] at java.base/java.util.ServiceLoader$1.run(ServiceLoader.java:659) [ERROR] at java.base/java.util.ServiceLoader$1.run(ServiceLoader.java:656) [ERROR] at java.base/java.security.AccessController.doPrivileged(Native Method) [ERROR] at java.base/java.util.ServiceLoader.getConstructor(ServiceLoader.java:667) [ERROR] ... 35 more [ERROR] Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlAccessType [ERROR] at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) [ERROR] at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) [ERROR] at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) [ERROR] at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) [ERROR] ... 43 moreThe pom is: <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>org.ttt.baw.reporting</groupId>
	<artifactId>parent-baw-reporting</artifactId>
	<version>${revision}</version>
	<relativePath>../parent-baw-reporting</relativePath>
</parent>

<artifactId>baw-reporting-core</artifactId>
<name>RAW-Reporting-Core</name>
<description>
	- Technisches Modul
	- Die technische Implementierung des Reportings
	- Keine Fachlichkeit!
</description>

<dependencies>
	<dependency>
		<groupId>org.ttt.baw.reporting</groupId>
		<artifactId>baw-config-service</artifactId>
		<version>${project.version}</version>
	</dependency>
	<dependency>
		<groupId>org.ttt.baw.reporting</groupId>
		<artifactId>baw-io</artifactId>
		<version>${project.version}</version>
	</dependency>
	<dependency>
		<groupId>org.ttt.baw.reporting</groupId>
		<artifactId>baw-results-core</artifactId>
		<version>${project.version}</version>
	</dependency>
	<dependency>
		<groupId>org.ttt.swaw.pl</groupId>
		<artifactId>swaw-pl</artifactId>
	</dependency>

	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-lang3</artifactId>
	</dependency>
	<!-- API, java.xml.bind module -->
	<dependency>
		<groupId>jakarta.xml.bind</groupId>
		<artifactId>jakarta.xml.bind-api</artifactId>
		<version>3.0.0-RC3</version>
	</dependency>


	<!-- Tests -->
	<dependency>
		<groupId>com.google.jimfs</groupId>
		<artifactId>jimfs</artifactId>
	</dependency>
	<dependency>
		<groupId>org.mockito</groupId>
		<artifactId>mockito-core</artifactId>
	</dependency>
</dependencies>

<build>
	<plugins>
		<!-- @see http://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2/example_xjc_basic.html -->
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>jaxb2-maven-plugin</artifactId>
			<version>2.5.0</version>
			<executions>
				<execution>
					<id>xjc</id>
					<goals>
						<goal>xjc</goal>
					</goals>
				</execution>
			</executions>
			<configuration>
				<sources>
					<source>src/main/resources/reports/core/fussnote/xsd/fussnote.xsd</source>
				</sources>
				<packageName>org.ttt.baw.reporting.core.fussnote</packageName>
				<outputDirectory>target/generated-sources</outputDirectory>
				<clearOutputDir>false</clearOutputDir>
				<xsdPathWithinArtifact>.</xsdPathWithinArtifact>
			</configuration>
			<dependencies>
			<dependency>
					<groupId>jakarta.xml.bind</groupId>
					<artifactId>jakarta.xml.bind-api</artifactId>
					<version>3.0.0-RC3</version>
				</dependency>
			</dependencies>
		</plugin>
	</plugins>
</build>

`

ImanGharib avatar Oct 01 '20 08:10 ImanGharib

I tried the same an came up with the following solution:

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>2.4</version>
                <dependencies>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-xjc</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-jxc</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-runtime</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-core</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.activation</groupId>
                        <artifactId>jakarta.activation</artifactId>
                        <version>2.0.1</version>
                    </dependency>
                </dependencies>
            </plugin>

nekator avatar May 20 '21 07:05 nekator

Hi @ImanGharib and @nekator ,

I'm facing with a similar problem. i'm trying to generate Java objects with jakarta.* package. And it doesn't work, even with your previous propositions.

Below is my pom file :

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>sample-jaxb</artifactId>
	<dependencies>
		<dependency>
			<groupId>jakarta.xml.bind</groupId>
			<artifactId>jakarta.xml.bind-api</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>jakarta.activation</groupId>
			<artifactId>jakarta.activation-api</artifactId>
			<version>2.0.1</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jaxb</groupId>
			<artifactId>jaxb-runtime</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jaxb</groupId>
			<artifactId>jaxb-core</artifactId>
			<version>3.0.1</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>jaxb2-maven-plugin</artifactId>
                                <version>2.5.0</version>
				<dependencies>
					<dependency>
						<groupId>jakarta.xml.bind</groupId>
						<artifactId>jakarta.xml.bind-api</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-xjc</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-jxc</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-runtime</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-core</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>jakarta.activation</groupId>
						<artifactId>jakarta.activation-api</artifactId>
						<version>2.0.1</version>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<id>xjc-sample</id>
						<goals>
							<goal>xjc</goal>
						</goals>
						<configuration>
							<packageName>jaxb.sample</packageName>
							<xjbSources>
								<xjbSource>${project.build.directory}/bindings.xjb
								</xjbSource>
							</xjbSources>
							<sources>
								<source>src/test/resources/xsd/</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

And i got this error with the command mvn compile :

[INFO] --- jaxb2-maven-plugin:2.5.0:xjc (xjc-sample) @ sample-jaxb ---
[WARNING] Error injecting: org.codehaus.mojo.jaxb2.javageneration.XjcMojo
java.lang.Error: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
	at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:171)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.google.inject.internal.DefaultConstructionProxyFactory$ReflectiveProxy.newInstance(DefaultConstructionProxyFactory.java:126)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
	at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
	at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
	at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
	at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:520)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:124)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
	at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:167)
	... 53 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

Did you success to generate code with jakarta packages ?

Any help would be appreciate

RomainPruvostMHH avatar Sep 23 '21 05:09 RomainPruvostMHH

Hi @ImanGharib and @nekator ,

I'm facing with a similar problem. i'm trying to generate Java objects with jakarta.* package. And it doesn't work, even with your previous propositions.

Below is my pom file :

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>sample-jaxb</artifactId>
	<dependencies>
		<dependency>
			<groupId>jakarta.xml.bind</groupId>
			<artifactId>jakarta.xml.bind-api</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>jakarta.activation</groupId>
			<artifactId>jakarta.activation-api</artifactId>
			<version>2.0.1</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jaxb</groupId>
			<artifactId>jaxb-runtime</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jaxb</groupId>
			<artifactId>jaxb-core</artifactId>
			<version>3.0.1</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>jaxb2-maven-plugin</artifactId>
                                <version>2.5.0</version>
				<dependencies>
					<dependency>
						<groupId>jakarta.xml.bind</groupId>
						<artifactId>jakarta.xml.bind-api</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-xjc</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-jxc</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-runtime</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>jaxb-core</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>jakarta.activation</groupId>
						<artifactId>jakarta.activation-api</artifactId>
						<version>2.0.1</version>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<id>xjc-sample</id>
						<goals>
							<goal>xjc</goal>
						</goals>
						<configuration>
							<packageName>jaxb.sample</packageName>
							<xjbSources>
								<xjbSource>${project.build.directory}/bindings.xjb
								</xjbSource>
							</xjbSources>
							<sources>
								<source>src/test/resources/xsd/</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

And i got this error with the command mvn compile :

[INFO] --- jaxb2-maven-plugin:2.5.0:xjc (xjc-sample) @ sample-jaxb ---
[WARNING] Error injecting: org.codehaus.mojo.jaxb2.javageneration.XjcMojo
java.lang.Error: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
	at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:171)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.google.inject.internal.DefaultConstructionProxyFactory$ReflectiveProxy.newInstance(DefaultConstructionProxyFactory.java:126)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
	at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
	at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
	at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
	at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
	at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
	at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:520)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:124)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
	at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:167)
	... 53 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

Did you success to generate code with jakarta packages ?

Any help would be appreciate

You should try Version 3.0.0 of this plugin. It looks like the issue you are facing is resolved with this release.

nekator avatar Sep 23 '21 06:09 nekator

Hi @nekator, Where could I find the version 3.0.0 ? the lugin doesn't exist in Maven's repo : image

RomainPruvostMHH avatar Sep 23 '21 08:09 RomainPruvostMHH

Hi @nekator, Where could I find the version 3.0.0 ? the lugin doesn't exist in Maven's repo : image

Sorry it looks like there is a github release and tag for 3.0.0 but no published version on maven central. https://github.com/mojohaus/jaxb2-maven-plugin/issues/183

Maybe you should try this fork while waiting for a 3.0.0 release.

<dependency>
  <groupId>com.evolvedbinary.maven.mojohaus</groupId>
  <artifactId>jaxb-maven-plugin</artifactId>
  <version>3.0.0</version>
</dependency>

nekator avatar Sep 23 '21 09:09 nekator

Hi, Thanks @nekator, it works well with com.evolvedbinary.maven.mojohaus:jaxb-maven-plugin:3.0.0.

FYI, below the config which works too but with org.codehaus.mojo:jaxb2-maven-plugin:2.5.0. But you need to declare the dependencies for jaxb 3. it is not ideal especially since I must also declare a dependence javax.xml.bind:jaxb-api:2.3.1

                            <plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>jaxb2-maven-plugin</artifactId>
				<dependencies>
					<dependency>
						<groupId>jakarta.xml.bind</groupId>
						<artifactId>jakarta.xml.bind-api</artifactId>
						<version>3.0.1</version>
					</dependency>
					<dependency>
						<groupId>com.sun.xml.bind</groupId>
						<artifactId>jaxb-xjc</artifactId>
						<version>3.0.0</version>
					</dependency>
					<dependency>
						<groupId>com.sun.xml.bind</groupId>
						<artifactId>jaxb-jxc</artifactId>
						<version>3.0.0</version>
					</dependency>
					<dependency>
						<groupId>com.sun.xml.bind</groupId>
						<artifactId>jaxb-impl</artifactId>
						<version>3.0.2</version>
					</dependency>
					<dependency>
						<groupId>javax.xml.bind</groupId>
						<artifactId>jaxb-api</artifactId>
						<version>2.3.1</version>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<id>xjc-sample</id>
						<phase>generate-test-sources</phase>
						<goals>
							<goal>xjc</goal>
						</goals>
						<configuration>
							<packageName>jaxb.sample.codehaus250</packageName>
							<xjbSources>
								<xjbSource>${project.build.directory}/classes/bindings-ns-jakarta.xjb
								</xjbSource>
							</xjbSources>
							<sources>
								<source>src/test/resources/xsd/</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>

RomainPruvostMHH avatar Sep 23 '21 15:09 RomainPruvostMHH

FYI, below the config which works too but with org.codehaus.mojo:jaxb2-maven-plugin:2.5.0. But you need to declare the dependencies for jaxb 3. it is not ideal especially since I must also declare a dependence javax.xml.bind:jaxb-api:2.3.1

thanks! I get my service now running using jaxb2-maven-plugin Version 2.5.0 generating the jakarta dependencies. But now when I try to send a request, I always get ">No adapter for endpoint [public jakarta.xml.bind.JAXBElement<de.fhac.vs.gen.GetCountryRequest> de.xyz.CountryEndpoint.getCountry(jakarta.xml.bind.JAXBElement<de.xyz.gen.GetCountryRequest>)]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?"

I think my endpoint seems correct:

@Endpoint
public class CountryEndpoint {

    private static final String NAMESPACE_URI = "http://www.baeldung.com/springsoap/gen";

    private CountryRepository countryRepository;

    @Autowired
    public CountryEndpoint(CountryRepository countryRepository) {
        this.countryRepository = countryRepository;
    }

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "getCountryRequest")
    @ResponsePayload
    public JAXBElement<GetCountryResponse> getCountry(@RequestPayload JAXBElement<GetCountryRequest> request) {
        GetCountryResponse response = new GetCountryResponse();
        response.setCountry(countryRepository.findCountry(request.getValue().getName()));
        QName qname = new QName("getCountryRequest");
        JAXBElement<GetCountryResponse> jaxbElement = new JAXBElement<GetCountryResponse>( qname, GetCountryResponse.class, response);
        return jaxbElement;
    }

}

Any idea what could be wrong?

Kiolali avatar Oct 14 '21 09:10 Kiolali

maybe the problem could be, that I'm having a Spring Boot Application and Spring Boot is not yet compatible with Java EE 9 (jakarata namespaces)?!

Kiolali avatar Oct 14 '21 11:10 Kiolali

please try with version 3.1.0

slachiewicz avatar May 06 '22 13:05 slachiewicz

I have the reverse problem. The plugin is generating jakarta annotations and I want the javax.xml.bind.annotation annotations. How do we control which annotations it uses in generated source code?

johndunlap avatar Jul 22 '22 18:07 johndunlap

For javax.xml.bin could you try the previous version 2.5.0?

slachiewicz avatar Jul 25 '22 15:07 slachiewicz