Home > Java > javaTutorial > Implementation of jaxb-api has not been found on module path or classpath. Error Solution

Implementation of jaxb-api has not been found on module path or classpath. Error Solution

Barbara Streisand
Release: 2025-01-21 08:07:10
Original
231 people have browsed it

Implementation of jaxb-api has not been found on module path or classpath. Error Solution

Java applications may encounter the following errors when using Java Architecture for XML Binding (JAXB):

<code>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.internal.bind.v2.ContextFactory]</code>
Copy after login

This error is usually caused by missing JAXB implementation classes in the project classpath, especially when running on Java 9 and above.

Problem Analysis

Starting with Java 9, the JAXB API has been deprecated and removed from the default classpath. As of Java 11, it has been completely removed from the JDK. Therefore, applications that rely on JAXB need to explicitly include the necessary JAXB libraries in their project settings.

Solution

To resolve this issue, you need to include the corresponding JAXB dependencies in your project. The exact steps depend on your build tools and project settings.

1. Maven project

Add the following dependencies to your pom.xml file:

<code class="language-xml"><dependencies>
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>3.0.0</version>
    </dependency>
</dependencies></code>
Copy after login

These dependencies include the JAXB API and its runtime implementation, ensuring that your application has access to the necessary classes at runtime.

2. Gradle project

Include the following in your build.gradle file:

<code class="language-gradle">dependencies {
    // JAXB API
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.0'
    // JAXB Runtime Implementation
    implementation 'org.glassfish.jaxb:jaxb-runtime:3.0.0'
}</code>
Copy after login

This configuration will resolve JAXBException by adding the required JAXB libraries to your project.

Alternative implementation

If you prefer to use another JAXB implementation, such as EclipseLink MOXy, you can include its dependency:

Maven:

<code class="language-xml"><dependencies>
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.moxy</artifactId>
        <version>3.0.0</version>
    </dependency>
</dependencies></code>
Copy after login

Gradle:

<code class="language-gradle">dependencies {
    // JAXB API
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.0'
    // EclipseLink MOXy Implementation
    implementation 'org.eclipse.persistence:org.eclipse.persistence.moxy:3.0.0'
}</code>
Copy after login

MOXy configuration

When using EclipseLink MOXy, JAXBContextFactory must be specified to use its implementation. Create a jaxb.properties file in the same package as your domain class with the following content:

<code class="language-properties">jakarta.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory</code>
Copy after login

This configuration instructs JAXB to use EclipseLink MOXy as its implementation.

General debugging tips

  • Check Java Version: Make sure you know your project's Java version and its compatibility with the included JAXB libraries.
  • Use a dependency management tool: Use Maven's dependency:tree or Gradle's dependencies task to confirm that the correct version of the JAXB library is included.
  • Classpath issues: Verify that your classpath contains the necessary JAXB libraries at runtime.

Summary

"Implementation of JAXB-API not found" error is a common error when migrating to newer Java versions. By explicitly including the required JAXB dependencies and ensuring correct configuration, you can resolve this issue and ensure compatibility with modern Java environments.

The above is the detailed content of Implementation of jaxb-api has not been found on module path or classpath. Error Solution. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template