The “java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException” is a common runtime error we may encounter when running applications, particularly in newer Java versions. If you are facing this error then follow this article to know the possible causes of this error and how to resolve it.

Understanding the issue

Let us first understand what does this error mean. The “java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException” error indicates that the Java runtime is unable to find the class “javax.xml.bind.JAXBException” at runtime. This class is part of the JAXB API, used for XML data binding. There are mainly two ways why this error occurs.

Java version:

When we run an application with a Java version that does not include the JAXB API by default, such as Java 9 and later versions.

Incorrect classpath configuration:

If your application is using a third-party library or framework that requires JAXB and you have not included the necessary JAXB dependencies in the classpath, the error may occur.

Possible solutions:

Using the compatible java versions:

If your application relies on JAXB and you encounter this error in Java 9 or later versions, one solution is to run the application on a Java version that includes the JAXB API. For example, you can use Java 8, which still includes JAXB in the default classpath.

Add JAXB Dependencies to Classpath:

If you need to run your application on Java 9 or later versions, you can add the JAXB dependencies manually to your classpath. JAXB is available as a separate module in Java 9 and later. You can include the necessary JAXB modules by adding the following command line option when running your Java application:

--add-modules java.xml.bind

For example, if you are using the java command to run your application, you can use the following command:

java --add-modules java.xml.bind -jar your-application.jar

If you are using a build tool such as Maven or Gradle, you can add JAXB dependencies to your project configuration. For Maven, you can add the following dependency in your pom.xml:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

For Gradle, you can add the following dependency in your build.gradle:

implementation 'javax.xml.bind:jaxb-api:2.3.1'

Note: Make sure to use the appropriate version of the JAXB API that matches your Java version.

References:

https://docs.oracle.com/javase/9/compatibility/index.html

Categorized in:

Tagged in: