1219

I have some code that uses JAXB API classes which have been provided as a part of the JDK in Java 6/7/8. When I run the same code with Java 9, at runtime I get errors indicating that JAXB classes can not be found.

The JAXB classes have been provided as a part of the JDK since Java 6, so why can Java 9 no longer find these classes?

Braiam
  • 1
  • 11
  • 47
  • 78
Andy Guibert
  • 41,446
  • 8
  • 38
  • 61

45 Answers45

1766

The JAXB APIs are considered to be Java EE APIs and therefore are no longer contained on the default classpath in Java SE 9. In Java 11, they are completely removed from the JDK.

Java 9 introduces the concepts of modules, and by default, the java.se aggregate module is available on the classpath (or rather, module-path). As the name implies, the java.se aggregate module does not include the Java EE APIs that have been traditionally bundled with Java 6/7/8.

Fortunately, these Java EE APIs that were provided in JDK 6/7/8 are still in the JDK, but they just aren't on the classpath by default. The extra Java EE APIs are provided in the following modules:

java.activation
java.corba
java.transaction
java.xml.bind  << This one contains the JAXB APIs
java.xml.ws
java.xml.ws.annotation

Quick and dirty solution: (JDK 9/10 only)

To make the JAXB APIs available at runtime, specify the following command-line option:

--add-modules java.xml.bind

But I still need this to work with Java 8!!!

If you try specifying --add-modules with an older JDK, it will blow up because it's an unrecognized option. I suggest one of two options:

  1. You can set any Java 9+ only options using the JDK_JAVA_OPTIONS environment variable. This environment variable is automatically read by the java launcher for Java 9+.
  2. You can add the -XX:+IgnoreUnrecognizedVMOptions to make the JVM silently ignore unrecognized options, instead of blowing up. But beware! Any other command-line arguments you use will no longer be validated for you by the JVM. This option works with Oracle/OpenJDK as well as IBM JDK (as of JDK 8sr4).

Alternate quick solution: (JDK 9/10 only)

Note that you can make all of the above Java EE modules available at run time by specifying the --add-modules java.se.ee option. The java.se.ee module is an aggregate module that includes java.se.ee as well as the above Java EE API modules. Note, this doesn't work on Java 11 because java.se.ee was removed in Java 11.


Proper long-term solution: (JDK 9 and beyond)

The Java EE API modules listed above are all marked @Deprecated(forRemoval=true) because they are scheduled for removal in Java 11. So the --add-module approach will no longer work in Java 11 out-of-the-box.

What you will need to do in Java 11 and forward is include your own copy of the Java EE APIs on the classpath or module path. For example, you can add the JAX-B APIs as a Maven dependency like this:

<!-- API, java.xml.bind module -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.2</version>
</dependency>

<!-- Runtime, com.sun.xml.bind module -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.2</version>
</dependency>

See the JAXB Reference Implementation page for more details on JAXB.

For full details on Java modularity, see JEP 261: Module System

As of July 2022, the latest version of the bind-api and jaxb-runtime is 4.0.0. So you can also use

    <version>4.0.0</version>

...within those dependency clauses. But if you do so, the package names have changed from javax.xml.bind... to jakarta.xml.bind.... You will need to modify your source code to use these later versions of the JARs.

For Gradle or Android Studio developer: (JDK 9 and beyond)

Add the following dependencies to your build.gradle file:

dependencies {
    // JAX-B dependencies for JDK 9+
    implementation "jakarta.xml.bind:jakarta.xml.bind-api:2.3.2"
    implementation "org.glassfish.jaxb:jaxb-runtime:2.3.2"
}
Cheeso
  • 189,189
  • 101
  • 473
  • 713
Andy Guibert
  • 41,446
  • 8
  • 38
  • 61
  • So just add it to your gradle dependencies? – deFreitas Aug 30 '17 at 21:14
  • 9
    So if the Java EE API modules are marked deprecated does that mean it is a possibility that in Java 10 JAXB will no longer be available at runtime in Java 10? That seems like a step backwards. We will have to go back to the pre-6 practice of including JAXB as a dependency. – Michael Sep 22 '17 at 17:35
  • I'm not sure what release it will be removed in, but according to the Java 9 javadoc, the module is marked `@Deprecated(forRemoval=true)` so its safe to say it will be removed eventually. See here: http://download.java.net/java/jdk9/docs/api/java.xml.bind-summary.html – Andy Guibert Sep 23 '17 at 04:26
  • 2
    It is my understanding that the intent is to evaluate how much depends on the module before fully deciding when/if to remove it (see [here](http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-May/004309.html)), but for now it is definitely intended to eventually be removed at some future point (and projects are expected to use an external dependency for the functionality). With the new release schedule for Java, I'm not real clear if there even will be something called "Java 10" or not, or exactly when this is able to be removed. – Matthew Sep 24 '17 at 21:33
  • Is there any way to solve that issue by modifying PATH, or maybe CLASSPATH in Windows environments? I'm looking forward to start working with Android SDK, but it looks like with JRE8(9) the only option would be to modify the tools scripts manually... This is definitely not the first time when breaking change of one Java module introduces collapse of others... But - it still sucks same way it did first time :) . Thanks in advance. – Der Zinger Oct 09 '17 at 16:49
  • 4
    Using --add-modules java.se.ee or --add-modules ALL-SYSTEM as a workaround is not recommended according to migration guide here https://docs.oracle.com/javase/9/migrate/ under section Modules Shared with Java EE Not Resolved by Default --> point 1 – justMe Oct 20 '17 at 14:32
  • what if I am using sbt? can I modify build.sbt to add `java.se.ee`? – Aero Wang Nov 17 '17 at 08:44
  • 1
    Alone `jaxb-api` dependency is not enough (anymore?). Please, refer my version of the solution: https://stackoverflow.com/a/48136912/1479414 – Andremoniy Jan 07 '18 at 12:18
  • @Andremoniy it depends on how deeply the application is using JAX-B -- sometimes just the API is sufficient. I've updated my answer to indicate which version of API/impl people should use if they want to match Java 6/7/8 – Andy Guibert Jan 07 '18 at 19:57
  • Why not `2.3.0`? – Andremoniy Jan 07 '18 at 19:58
  • Looks like 2.3.0 didn't release until 2017 (after Java 8 was released). I was going off of this wikipedia page for the JavaSE to JAX-B version mappings: https://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding – Andy Guibert Jan 07 '18 at 19:59
  • Adding the dependencies to my pom.xml resolved the problem! – Athus Vieira Feb 06 '18 at 20:06
  • 2
    The version `2.2.8` does not exist for jaxb-core and jaxb-impl anymore. Use `2.2.11` or `2.3.0` works fine. – Mincong Huang Feb 27 '18 at 21:59
  • 1
    Thanks for pointing that out @MincongHuang, I've updated the answer to show `2.2.11` instead of `2.2.8` (didn't go to 2.3.0 in order to best match JDK 8) – Andy Guibert Feb 27 '18 at 22:13
  • 7
    With Java 10 officially released, we can confirm that the add-modules method will still work. The `javax.xml.bind` and other JavaEE classes are scheduled for removal in Java 11, per [JEP-320](http://openjdk.java.net/jeps/320). – Joep Weijers Mar 21 '18 at 11:02
  • Never use _java.se.ee_ module. Neither via `requires`, nor via --add-modules. This module is gone in Java 11 and your code will break. Instead, use specific module names (e.g. java.xml.bind). – ZhekaKozlov May 28 '18 at 05:14
  • @ZhekaKozlov it doesn't matter if you specify `java.se.ee` vs. `java.xml.bind`, both modules will be removed in Java 11 – Andy Guibert May 28 '18 at 17:08
  • @AndyGuibert But _java.xml.bind_ will continue to work as a Maven dependency. _java.se.ee_ has no Maven equivalent. – ZhekaKozlov May 28 '18 at 18:26
  • 14
    And now Java 11 is released and the `java.se.ee` module has been removed, so the `--add-modules` solution does not work anymore. Use the recommended solution instead: add JAXB as a separate dependency. – Jesper Sep 30 '18 at 12:30
  • The JEP has links to maven central searches for each of the artifacts that's been removed. – Matt McHenry Oct 31 '18 at 14:12
  • When trying to remain compatible to the old java8 version of my program, should I use the latest versions or 2.2.8 (meaning 2.2.8-b01)? What about 2.2.11 versus 2.3.0/2.3.1? – Markus Barthlen Nov 30 '18 at 11:33
  • I would recommend the newest 2.2.X version. The only difference between 2.2.X and 2.3.X is support for JPMS modules (e.g. adding a module-info). – Andy Guibert Nov 30 '18 at 18:42
  • `activation` is not needed, since it's already included by `jaxb-api`. – Eric Jan 11 '19 at 09:34
  • I have java 11, how am i supposed to change the sdk manager to make it work. Bc i just wanted to make an android Game with Unity. That's all i wanted to do and now I've wasted 3 hours reading forums with suggestions that don't work –  Feb 26 '19 at 14:19
  • --add-modules java.se.ee, for me only worked with java 10 and tomcat 9 – Kvark900 Apr 06 '19 at 15:34
  • **DatatypeConfigurationException:** Provider org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl not found – Iman Marashi Jul 06 '19 at 06:29
  • 53
    i've added these dependencies and it is still giving me the same error. any ideas why? – João Vieira Jul 08 '19 at 17:16
  • 1
    Is there a way to fix this as a *user*? Is it possible to download JAXB, add it to my CLASSPATH and then have the program in question just work by itself? (I've been trying this, but it isn't working, so I wanted to check whether it's actually possible or I'm just doing something wrong). – Len Sep 09 '20 at 02:10
  • 1
    @AndyGuibert - I have an app as a war file. I cannot modify the code. So, how do I fix the exception? How do I download the jaxb dependencies and add them to classpath so that the war file can use them? – MasterJoe Sep 24 '20 at 22:29
  • @Len check which packages you're missing. Odds are you will need a <2.0.0 version, which still uses javax package naming instead of jakarta. – Dragas Jan 29 '21 at 13:16
  • If you use Linux and decided to use java 8, you must make sure to use the correct version of java. Review this https://www.marcotoscano.org/2021/08/how-to-resolve-errors-related-with.html – martosfre Aug 03 '21 at 14:18
  • 1
    I am so confused of why this works for `2.3.0`, but does not for `3.1.0` :| – Eugene Jan 25 '22 at 10:25
  • 2
    If you use `2.3.0`, the package names are the same as before: `javax.xml.bind...`. If you use later versions, like 3.x and 4.x, then you need to modify your code to use packages like `jakarta.xml.bind...` – Cheeso Jul 27 '22 at 20:45
  • In my Android project, I add 2.3.2 to build.gradle and it throws a new error: Unable to load class 'javax.xml.bind.JAXBException'. Any ideas? – Krahmal Nov 03 '22 at 08:57
  • in my case, open my old 2020 Android Studio projects. just download android studio Artic Fox Patch 3. and set grandle JDK to 1.8 on Project structure. im successfully build and running the project. hope it helped. – Indra As Lesmana May 25 '23 at 22:59
400

In my case (spring boot fat jar) I just add the following to pom.xml.

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
jdev
  • 5,304
  • 1
  • 17
  • 20
112

Clean solution for all JDKs >= 9

You need to add two dependencies to your build

  • the jaxb-api
  • a jaxb implementation

As an implementation I chose to use the reference implementation by glassfish to get rid of old com.sun classes / libraries. So as a result I added in my maven build

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

<dependency>
  <groupId>org.glassfish.jaxb</groupId>
  <artifactId>jaxb-runtime</artifactId>
  <version>2.3.1</version>
</dependency>

Note that from version 2.3.1 you don't need to add the javax.activation any longer. (see https://github.com/eclipse-ee4j/jaxb-ri/issues/1222)

TuGordoBello
  • 4,350
  • 9
  • 52
  • 78
Sebastian Thees
  • 3,113
  • 4
  • 14
  • 23
  • Is the javax.xml.bind module really required? My code in JDK 11 works without it. – k.liakos Nov 01 '18 at 16:11
  • @k.liakos I am not sure. The jaxb-runtime jar and the api-jar do not share the same classes/packages. I guess it depends on your code. If your code does not use the classes from the package 'javax.xml.bind' then you probably don't need it. The topic of this thread is that 'javax/xml/bind/JAXBException' cannot be found; this class is only in the jaxb-api. – Sebastian Thees Nov 02 '18 at 09:30
  • 2
    Works perfectly with multi-module project in java 12. – Heril Muratovic Jun 24 '19 at 12:23
  • 3
    Works in JDK 11. – Hrvoje T Sep 30 '22 at 22:17
  • where is pom.xml file in project which is writable , in my project all pom.xml file only readbale, Is I need to create another one, if yes where i create this. @SebastianThees – Surajkaran Meghwanshi Jan 11 '23 at 06:38
89

None of these solutions worked fine for me in the recent JDK 9.0.1.

I found that this list of dependencies is enough for a proper functioning, so you don't need to explicitly specify --add-module (though it is specified within these dependencies's pom's). The only you need is to specify this list of dependencies:

<dependencies>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>
Andremoniy
  • 34,031
  • 20
  • 135
  • 241
  • 2
    For JDK 8, remove the jaxb-core and jaxb-impl from above. – foo Jan 19 '18 at 04:48
  • Where do i find the corresponding file ? – Anil Feb 13 '18 at 12:16
  • Which file @Anil? – Andremoniy Feb 13 '18 at 12:51
  • @Andremoniy , the above mentioned xml file to add dependency – Anil Feb 13 '18 at 13:12
  • 4
    @Anil this is a `pom.xml` file of the Maven configuration. If you don't know what is that, then it is better to start from beggining – Andremoniy Feb 13 '18 at 13:16
  • @Andremoniy, thanks for the suggestion. But i am not getting proper resources. – Anil Feb 13 '18 at 13:19
  • 8
    An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.sun.xml.bind.v2.runtime.reflect.opt.Injector (file:/C:/Users/eis/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) WARNING: Please consider reporting this to the maintainers of com.sun.xml.bind.v2.runtime.reflect.opt.Injector WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release – Stefan Feb 19 '18 at 10:02
  • 1
    This worked for me on JDK 9.0.4 (I was calling JAXB related code through a Maven plugin with Maven 3.5.3). Although I would use ` javax.activation javax.activation-api 1.2.0 ` as last dependency. – scrutari Apr 20 '18 at 22:58
  • 2
    Awesome. I had a situation where - for some reason - a spring boot app would run in intellij CE but not eclipse on mac, and in eclipse but not intellij CE on win10. Being able to work in one IDE on two platforms is an advantage. – kometen May 25 '18 at 13:22
  • https://stackoverflow.com/a/50251510/14379 has a solution for the illegal reflective access – seanf Aug 22 '18 at 03:02
  • and where do i put the XML of this. –  Feb 26 '19 at 14:20
  • in my project pom.xml file only readable format , what does i need to do ? @Andremoniy – Surajkaran Meghwanshi Jan 11 '23 at 06:40
48

This worked for me:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.7.0</version>
</dependency>

Update

As @Jasper suggested, in order to avoid depending on the entire EclipseLink library, you can also just depend on EclipseLink MOXy:

Maven

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.moxy</artifactId>
    <version>2.7.3</version>
</dependency>

Gradle

compile group: 'org.eclipse.persistence', name: 'org.eclipse.persistence.moxy', version: '2.7.3'

As dependencies for my Java 8 app, which produces a *.jar which can be run by both JRE 8 or JRE 9 with no additional arguments.

In addition, this needs to be executed somewhere before JAXB API will be used:

System.setProperty("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory");

Works great so far, as a workaround. Doesn't look like a perfect solution though...

Mikhail Kholodkov
  • 23,642
  • 17
  • 61
  • 78
  • 6
    adding `org.eclipse.persistence:eclipselink` just to get JAXB APIs is a very heavy-weight dependency, unless you are already using eclipselink? – Andy Guibert Sep 27 '17 at 18:59
  • 4
    Yes it is heavy (~9mb) and yes I've been using that already. I've mentioned that this is simply an alternative workaround for those who, maybe temporary, will have to use both 8 and 9 JREs for the same jar/war without providing command-line arguments. – Mikhail Kholodkov Sep 27 '17 at 19:33
  • 2
    for the sake of interop between JDK 8 & 9, I would recommend using the `-XX:+IgnoreUnrecognizedVMOptions` command line option (updated my answer with details) – Andy Guibert Sep 27 '17 at 19:55
  • System.setProperty("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory"); does not work for me – David Brossard Feb 16 '18 at 18:00
  • Make sure to add javax.xml.bind dependency as well – Mikhail Kholodkov Feb 16 '18 at 21:33
  • 1
    To avoid depending on the entire EclipseLink library, you can also just depend on EclipseLink MOXy: groupId `org.eclipse.persistence`, artifactId `org.eclipse.persistence.moxy`. – Jesper Sep 30 '18 at 13:14
  • where to i put this xml –  Feb 26 '19 at 14:20
  • @IchHabsDrauf add it to your Maven project build (pom.xml) file – Mikhail Kholodkov Feb 26 '19 at 16:47
  • I got this exception: "javax.xml.bind.JAXBException - with linked exception: [java.lang.SecurityException: class "org.eclipse.persistence.jaxb.dynamic.metadata.Metadata"'s signer information does not match signer information of other classes in the same package]" – scriptfoo Sep 09 '21 at 14:09
39

it´s because java version if you are using jdk 9 or a later version just add this to your pom

<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.0</version>
</dependency>
Jared Burrows
  • 54,294
  • 25
  • 151
  • 185
Cesar Rodriguez
  • 589
  • 4
  • 7
32

To solve this, I have imported some JAR files in my project:

  • javax.activation-1.2.0.jar

http://search.maven.org/remotecontent?filepath=com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.jar

  • jaxb-api-2.3.0.jar

http://search.maven.org/remotecontent?filepath=javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar

  • jaxb-core-2.3.0.jar

http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-core/2.3.0/jaxb-core-2.3.0.jar

  • jaxb-impl-2.3.0.jar

http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar

  1. Download above files and copy them into libs folder in the project
  2. Add the imported JAR files in Java Build Path
Cœur
  • 37,241
  • 25
  • 195
  • 267
Fábio Nascimento
  • 2,644
  • 1
  • 21
  • 27
  • 4
    Note that the `com.sun.xml.bind` artifacts are old and provided only for backward compatibility. You should use the equivalent `org.glassfish.jaxb` artifacts instead, as mentioned in some of the other answers. – Jesper Sep 30 '18 at 12:59
  • This didn't work for me. It threw an error, and said that it couldn't find a particular class. – RamenChef Oct 15 '18 at 02:15
  • 1
    Worked for me when I put them in tomcat9/lib folder under Mint 19.2 (Ubuntu 18.04 base), when deploying a Grails 3.4.10 application. – Mohamad Fakih Dec 05 '19 at 20:53
  • Didn't work, instead raised more errors requiring several other jar inclusions. Mine was for jdk8 – vibhor vaish Feb 25 '21 at 07:22
20

At the time of compilation as well as run time, add the switch --add-modules java.xml.bind

javac --add-modules java.xml.bind <java file name>

java --add-modules java.xml.bind <class file>

A good introduction of the JDK 9 modules can also be found at : https://www.youtube.com/watch?v=KZfbRuvv5qc

Tarunn
  • 1,038
  • 3
  • 23
  • 45
Pallavi Sonal
  • 3,661
  • 1
  • 15
  • 19
18

I encountered this issue when working on a Java Project in Debian 10.

Each time I start the appliction it throws the error in the log file:

java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

Here's how I solved it:

The issue is often caused when JAXB library (Java Architecture for XML Binding) is missing in the classpath. JAXB is included in Java SE 10 or older, but it is removed from Java SE from Java 11 or newer –moved to Java EE under Jakarta EE project.

So, I checked my Java version using:

java --version

And it gave me this output

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Debian-1deb10u1, mixed mode, sharing)

So I was encountering the JAXBException error because I was using Java 11, which does not have the JAXB library (Java Architecture for XML Binding) is missing in the classpath. JAXB is included in it.

To fix the issue I had to add the JAXB API library to the lib (/opt/tomcat/lib) directory of my tomcat installation:

sudo wget https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api/2.4.0-b180830.0359/jaxb-api-2.4.0-b180830.0359.jar

Then I renamed it from jaxb-api-2.4.0-b180830.0359.jar to jaxb-api.jar:

sudo mv jaxb-api-2.4.0-b180830.0359.jar jaxb-api.jar

Note: Ensure that you change the permission allow tomcat access the file and also change the ownership to tomcat:

sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 777 /opt/tomcat/

And then I restarted the tomcat server:

sudo systemctl restart tomcat

Resources: [Solved] java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

That's all.

Martin L. Brink
  • 407
  • 4
  • 12
Promise Preston
  • 24,334
  • 12
  • 145
  • 143
14

Update April 2019

Changelong for JAXB releases is at https://javaee.github.io/jaxb-v2/doc/user-guide/ch02.html

excerpts:

    4.1. Changes between 2.3.0.1 and 2.4.0

         JAXB RI is now JPMS modularized:

            All modules have native module descriptor.

            Removed jaxb-core module, which caused split package issue on JPMS.

            RI binary bundle now has single jar per dependency instead of shaded fat jars.

            Removed runtime class weaving optimization.

    4.2. Changes between 2.3.0 and 2.3.0.1

          Removed legacy technology dependencies:

            com.sun.xml.bind:jaxb1-impl

            net.java.dev.msv:msv-core

            net.java.dev.msv:xsdlib

            com.sun.xml.bind.jaxb:isorelax

    4.3. Changes between 2.2.11 and 2.3.0

          Adopt Java SE 9:

            JAXB api can now be loaded as a module.

            JAXB RI is able to run on Java SE 9 from the classpath.

            Addes support for java.util.ServiceLoader mechanism.

            Security fixes

Authoritative link is at https://github.com/eclipse-ee4j/jaxb-ri#maven-artifacts

Maven coordinates for JAXB artifacts

jakarta.xml.bind:jakarta.xml.bind-api: API classes for JAXB. Required to compile against JAXB.

org.glassfish.jaxb:jaxb-runtime: Implementation of JAXB, runtime used for serialization and deserialization java objects to/from xml.

JAXB fat-jar bundles:

com.sun.xml.bind:jaxb-impl: JAXB runtime fat jar.

In contrast to org.glassfish.jaxb artifacts, these jars have all dependency classes included inside. These artifacts does not contain JPMS module descriptors. In Maven projects org.glassfish.jaxb artifacts are supposed to be used instead.

org.glassfish.jaxb:jaxb-runtime:jar:2.3.2 pulls in:

[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.2:compile
[INFO] |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:compile
[INFO] |  +- org.glassfish.jaxb:txw2:jar:2.3.2:compile
[INFO] |  +- com.sun.istack:istack-commons-runtime:jar:3.0.8:compile
[INFO] |  +- org.jvnet.staxex:stax-ex:jar:1.8.1:compile
[INFO] |  +- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.16:compile
[INFO] |  \- jakarta.activation:jakarta.activation-api:jar:1.2.1:compile

Original Answer

Following Which artifacts should I use for JAXB RI in my Maven project? in Maven, you can use a profile like:

<profile>
    <id>java-9</id>
    <activation>
        <jdk>9</jdk>
    </activation>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>
</profile> 

Dependency tree shows:

[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.0:compile
[INFO] |  +- org.glassfish.jaxb:jaxb-core:jar:2.3.0:compile
[INFO] |  |  +- javax.xml.bind:jaxb-api:jar:2.3.0:compile
[INFO] |  |  +- org.glassfish.jaxb:txw2:jar:2.3.0:compile
[INFO] |  |  \- com.sun.istack:istack-commons-runtime:jar:3.0.5:compile
[INFO] |  +- org.jvnet.staxex:stax-ex:jar:1.7.8:compile
[INFO] |  \- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.13:compile
[INFO] \- javax.activation:activation:jar:1.1.1:compile

To use this in Eclipse, say Oxygen.3a Release (4.7.3a) or later, Ctrl-Alt-P, or right-click on the project, Maven, then select the profile.

JasonPlutext
  • 15,352
  • 4
  • 44
  • 84
  • Thanks for showing that a dependency for `javax.xml.bind` > `jaxb-api` that I have seen elsewhere is actually redundant. The glassfish dependency pulls it is. I just tried that, and it does indeed work. – Basil Bourque Jul 23 '18 at 05:42
14

You need to add JAX-B dependencies when using JDK 9+. For Android Studio user, you'll need to add this to your build.gradle's dependencies {} block:

// Add missing dependencies for JDK 9+
if (JavaVersion.current().ordinal() >= JavaVersion.VERSION_1_9.ordinal()) {
    // If you're using @AutoValue or any libs that requires javax.annotation (like Dagger)
    compileOnly 'com.github.pengrad:jdk9-deps:1.0'
    compileOnly 'javax.annotation:javax.annotation-api:1.3.2'

    // If you're using Kotlin
    kapt "com.sun.xml.bind:jaxb-core:2.3.0.1"
    kapt "javax.xml.bind:jaxb-api:2.3.1"
    kapt "com.sun.xml.bind:jaxb-impl:2.3.2"

    // If you're using Java
    annotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
    annotationProcessor "javax.xml.bind:jaxb-api:2.3.1"

    testAnnotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
    testAnnotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
}
Malachiasz
  • 7,126
  • 2
  • 35
  • 49
Hieu Rocker
  • 1,070
  • 12
  • 19
14

I also stumpled accross the ClassNotFoundException:javax.xml.bind.DatatypeConverter using Java 11 and

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

I tried all this stuff around adding javax.xml.bind:jaxb-api or spring boot jakarta.xml.bind-api .. I found a hint for fixes in jjwt version 0.10.0 .. but most importantly, the jjwt package is now split !

Thus, check this reference: https://github.com/jwtk/jjwt/issues/510

Simply, if you use

Java11 and jjwt 0.9.x and you face the ClassNotFoundException:javax.xml.bind.DatatypeConverter issue,

go for

jjwt version 0.11.x, but use the splitted packages: https://github.com/jwtk/jjwt#install

You maven wont find a higher version for jjwt dependency, since they split the packages.

Cheers.

Community
  • 1
  • 1
rico_s
  • 221
  • 2
  • 6
  • Using jjwt from io.jsonwebtoken version 0.9.1 with java 16 also caused the same error. The root cause is the same of java 11. Using jjwt-api and jjwt-impl (from io.jsonwebtoken) with version 0.10.7 solved the issue here. – lubrum Jul 21 '21 at 18:03
12

You can use --add-modules=java.xml.bind JVM option to add xml bind module to JVM run-time environment.

Eg: java --add-modules=java.xml.bind XmlTestClass

Willi Mentzel
  • 27,862
  • 20
  • 113
  • 121
12

This worked for me. Adding only jaxb-api wasn't enough.

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>${jaxb-api.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>${jaxb-api.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>${jaxb-api.version}</version>
        </dependency>
Mr Jedi
  • 33,658
  • 8
  • 30
  • 40
12

Go to Your Build.gradle and add below dependencies for both Java 9 or Java 10.

sourceCompatibility = 10 // You can also decrease your souce compatibility to 1.8 

//java 9+ does not have Jax B Dependents

    compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
    compile group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0'
    compile group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.0'
    compile group: 'javax.activation', name: 'activation', version: '1.1.1'
Kumar Abhishek
  • 3,004
  • 33
  • 29
12

The root cause of this issue is that Gradle Daemon using JDK11, either you set your JAVA_HOME to JDK11 or your running your Gradle Task in the shared daemon which running with JDK11.

For Android:

  1. Check your Project Structure settings, you can change the JDK to JDK8 from there.

  2. You can also set a JAVA_HOME and points to java8 home.

Umair Mustafa
  • 209
  • 4
  • 13
leon
  • 550
  • 6
  • 14
9

For Java Web Start Execution we can use Andy Guibert's suggestion like this:

<j2se version="1.6+" 
      java-vm-args="-XX:+IgnoreUnrecognizedVMOptions --add-modules=java.se.ee"/>

Note the extra "=" in the --add-modules. See this OpenJDK Ticket or the last note in "Understanding Runtime Access Warnings" of the Java Platform, Standard Edition Oracle JDK 9 Migration Guide.

mvw
  • 5,075
  • 1
  • 28
  • 34
9

add javax.xml.bind dependency in pom.xml

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
malith vitha
  • 473
  • 4
  • 4
9

This solved my problems with dependencies running Apache Camel 2.24.1 on Java 12:

    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>

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

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0.1</version>
    </dependency>
kachanov
  • 2,696
  • 2
  • 21
  • 16
9

Adding the below dependency worked for me.

        <!-- API, java.xml.bind module -->
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>2.3.2</version>
    </dependency>

    <!-- Runtime, com.sun.xml.bind module -->
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.2</version>
    </dependency>
Pijush
  • 417
  • 5
  • 3
  • 2
    Make a note that javax libraries are deprecated since jdk 11. Just replace javax dependencies with Jakarta libraries dependencies referring below link. https://wiki.eclipse.org/Jakarta_EE_Maven_Coordinates – Abhishek Singh Dec 15 '21 at 04:58
8

Since JavaEE is now governed by https://jakarta.ee/, the new Maven coordinates as of 2.3.2 are:

https://eclipse-ee4j.github.io/jaxb-ri/#maven-artifacts

The first released jaxb.version is 2.3.2.

<properties>
  <jaxb.version>2.3.2</jaxb.version>
</properties>

<dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>${jaxb.version}</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>${jaxb.version}</version>
</dependency>
dschulten
  • 2,994
  • 1
  • 27
  • 44
7

I followed this URL and the below settings had really helped me. I use Java 10 with STS IDE in Macbook Pro. It works like a charm.

   <dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.0</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>javax.activation-api</artifactId>
    <version>1.2.0</version>
</dependency>
itsraghz
  • 857
  • 1
  • 11
  • 25
6

I encountered the same issue using Spring Boot 2.0.5.RELEASE on Java 11.

Adding javax.xml.bind:jaxb-api:2.3.0 alone did not fix the problem. I also had to update Spring Boot to the latest Milestone 2.1.0.M2, so I assume this will be fixed in the next official release.

Javide
  • 2,477
  • 5
  • 45
  • 61
  • This does not sound related to me. there are several solutions in this thread that work regardless of using spring boot 2. (I also use spring boot 2.0.5.RELEASE btw). Maybe in Spring 2.1.0.M2 there is already a jaxb runtime included. – Sebastian Thees Nov 02 '18 at 09:40
  • It seems that with Spring Boot 2.1.0.RELEASE, JAXB is not necessary anymore - https://github.com/spring-projects/spring-boot/releases – Burrich Nov 04 '18 at 14:53
6

As the official documentation states:

When upgrading you may face the following:

java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

Hibernate typically requires JAXB that’s no longer provided by default. You can add the java.xml.bind module to restore this functionality with Java9 or Java10 (even if the module is deprecated).

As of Java11, the module is not available so your only option is to add the JAXB RI (you can do that as of Java9 in place of adding the java.xml.bind module:


Maven

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
</dependency>

Gradle (build.gradle.kts):

implementation("org.glassfish.jaxb:jaxb-runtime")

Gradle (build.gradle)

implementation 'org.glassfish.jaxb:jaxb-runtime'

If you rather specify a specific version, take a look here: https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime

Willi Mentzel
  • 27,862
  • 20
  • 113
  • 121
5

Not an answer, but an addendum: I got because running groovysh (Groovy 2.4.13) if JAVA_HOME points to a Java 9 installation (java version "9.0.1" to be precise) fails abysmally:

java.lang.reflect.InvocationTargetException
        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:564)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:107)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:129)
Caused by: java.lang.NoClassDefFoundError: Unable to load class groovy.xml.jaxb.JaxbGroovyMethods due to missing dependency javax/xml/bind/JAXBContext
        at org.codehaus.groovy.vmplugin.v5.Java5.configureClassNode(Java5.java:400)
        at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:277)
        at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:397)
        ...
        ..
        .
        ..
        ...
        at org.codehaus.groovy.tools.shell.Groovysh.<init>(Groovysh.groovy:135)
        at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
        at org.codehaus.groovy.tools.shell.Main.<init>(Main.groovy:66)
        at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
        at org.codehaus.groovy.tools.shell.Main.main(Main.groovy:163)
... 6 more

The solution was to:

  • Go to the JAXB Project at github.io ("JAXB is licensed under a dual license - CDDL 1.1 and GPL 2.0 with Class-path Exception")

  • Download jaxb-ri-2.3.0.zip

  • Unzip wherever you put your java infrastructure files (in my case, /usr/local/java/jaxb-ri/). Other solution may exist (maybe via SDKMAN, I dunno)

  • Make sure the jars in the lib subdirectory are on the CLASSPATH. I do it via a script started on bash startup, called /etc/profile.d/java.sh, where I added (among many other lines) the following loop:

Packed into a function...

function extend_qzminynshg {
   local BASE="/usr/local/java"
   for LIB in jaxb-api.jar  jaxb-core.jar  jaxb-impl.jar  jaxb-jxc.jar  jaxb-xjc.jar; do
      local FQLIB="$BASE/jaxb-ri/lib/$LIB"
      if [[ -f $FQLIB ]]; then
         export CLASSPATH=$FQLIB:$CLASSPATH
      fi
    done
}

extend_qzminynshg; unset extend_qzminynshg

And it works!

David Tonhofer
  • 14,559
  • 5
  • 55
  • 51
  • 1
    I don't understand the downvotzes. Apparently people want to faff around with command-line options instead of actually getting the jars? Suit yourself. – David Tonhofer Jan 20 '18 at 17:50
  • 8
    Java developers typically use build tools like Gradle or Maven to manage dependencies rather than manually downloading jars. That is probably the reason for the down votes. – Joshua Davis Mar 24 '18 at 13:55
5

you can use this dependency

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

OK, I have been having the same kind of issue, but I was using Java 8, and kept getting this error, I tried most of the solutions. but it turns out that my maven was still pointing to java 9 even-though I set the global Java version to 8, as soon as I fixed that it all worked.

For anybody who might have this kind of problem, check out How to fix Maven to use default Java (archived)

drac_o
  • 427
  • 5
  • 11
Ipkiss
  • 721
  • 2
  • 15
  • 27
4

You only need 1 dependency:

dependencies {
    implementation ("jakarta.xml.bind:jakarta.xml.bind-api:2.3.2")
Dmitry Kaltovich
  • 2,046
  • 19
  • 21
3

For me in Java 11 and gradle this is what worked out:

plugins {
      id 'java'
}

dependencies {
      runtimeOnly 'javax.xml.bind:jaxb-api:2.3.1'
}
silver_mx
  • 828
  • 9
  • 16
3

i want to give a simple and easy solution about this Exception , just downgrade the android studio version upto 4.1.1 or less. Make sure you don't have android studio arctic fox (2020.3.1) version , because latest version don't support old project of android.

Jayant Kumar
  • 775
  • 5
  • 12
3

If you are using JDK 11, you can just add the following to your Gradle(app):

dependencies {
    ...
    annotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
    ...
}

It works for me.

SUPERYAO
  • 326
  • 3
  • 11
  • ya, this allows us to forget this JAXB , but in some cases seems some elements can not found after this change . ex: class file for android.view.ViewGroup not found – charitha amarasinghe Dec 01 '22 at 18:39
2

Old answer "Problem resolved by switching to amazoncorretto" News answer: I used corretto latest , but is similar jdk 1.8. so anyway we need add dependencies manually

Armen Arzumanyan
  • 1,939
  • 3
  • 30
  • 56
  • 3
    The Amazon Corretto distribution for JDK 11 does not provide javax.xml.bind classes. If the problem was resolved after switching to Correto, it was because you downgraded to JDK 8. – Andy Guibert Apr 22 '19 at 13:38
  • strange, i will check, in the docker i used correto latest – Armen Arzumanyan Apr 22 '19 at 18:34
  • Yea, `amazoncorretto:latest` currently gives JDK 8, not 11. Many Docker images are still based on JDK 8, precisely because of the compatibility issues caused by the API removal between JDK 8 --> 11 – Andy Guibert Apr 22 '19 at 19:26
2

The dependency versions that I needed to use when compiling for Java 8 target. Tested application in Java 8, 11, and 12 JREs.

        <!-- replace dependencies that have been removed from JRE's starting with Java v11 -->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.8</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.2.8-b01</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.8-b01</version>
        </dependency>
        <!-- end replace dependencies that have been removed from JRE's starting with Java v11 -->
Chris
  • 437
  • 5
  • 7
2

You need to add jaxb dependancies to maven. The glassfish implementation version 2.3.2 is perfectly compatible with new jakarta EE jaxb api version 2.3.2.

<!-- API -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.2</version>
</dependency>

<!-- Runtime -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.2</version>
</dependency>
krishna T
  • 425
  • 4
  • 14
2

If you are using JDK 8 above, follow this steps:

  1. Add javax.xml.bind dependency
<dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
</dependency>
  1. clean maven
  2. install maven
Çağlar YILMAZ
  • 111
  • 2
  • 4
1

I know I'm late to the party, but my error ended up needing a diffrent solution... super simple too

I originally depoloyed to Tomcat 9 and realised I needed 7... I forgot to map my class path back to the 7 version in build.xml

Hopefully this will fix someone elses error in the future, who manages to overlook this simple issue as I did!

Pavel Smirnov
  • 4,611
  • 3
  • 18
  • 28
1

i had similar issues after upgrading my project to java 11, then what fixed it was upgrading to spring boot 2.1.1 which apparently has support for java 11, this helped

FreakAtNs
  • 135
  • 1
  • 9
  • please consider adding at least the part of the solution in your answer since link-only answers will become invalid if the url changes in the future. – yukashima huksay Oct 19 '19 at 11:13
1

Solution for SBT

libraryDependencies += "javax.xml.bind" % "jaxb-api" % "2.3.1"
slugmandrew
  • 1,776
  • 2
  • 25
  • 45
1

If you are working with version 3 of spring boot you can downgrade to 2.7.7 and change all jakarta to javax It worked for me

Ballo Ibrahima
  • 461
  • 4
  • 10
0

This worked for me, I have an spring boot project that compiles in Java 8 but I don't know why one day my maven started compiling with Java 11, in Ubuntu I used to fix it:

sudo update-java-alternatives  -l

That showed me the availave JDK on my pc:

java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64`

So I finally run this command to choose the desired one:

sudo update-java-alternatives  -s java-1.8.0-openjdk-amd64 

And that's it, for more into take a look at How to use the command update alternatives

AlvaroCachoperro
  • 711
  • 6
  • 12
  • your answer does not respond the question, you just change your path to use java8, meanwhile the question is how to solved with java9 – nekperu15739 Oct 30 '19 at 10:06
0

If you are calling SOAP web services (for example, using jaxws-maven-plugin) just by adding this dependency all JAXB errors disappear:

<dependency>
            <groupId>org.glassfish.metro</groupId>
            <artifactId>webservices-rt</artifactId>
            <version>2.4.3</version>
</dependency>

Tested with Java 13

GabrielBB
  • 2,479
  • 1
  • 35
  • 49
0

For me its simple solution (Mac User)

  run in terminal -->   alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`;java -version"

then run -->          j8

thats it !!(now run your mvn commands)

Or you can set above in your .bash_profile

Afsar Ali
  • 555
  • 6
  • 17
0

I have faced same problem in App in which module level build.gradle have added both View Binding and Data Binding.

Earlier

viewBinding {
    enabled = true
}

dataBinding {
    enabled = true
}

Resolved

dataBinding {
    enabled = true
}

In project-level build.gradle used as below

classpath 'com.android.tools.build:gradle:3.6.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
Pratik Dodiya
  • 2,337
  • 1
  • 19
  • 12
0

For me, Eclipse 2020-12 (4.18.0) was using inbuild (org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.1.v20201027-0507\jre)

upon updating java to 1.8 in installed JREs (which I wanted) resolved the issue.

Hope it helps.

Clover
  • 507
  • 7
  • 22
0

I am using these dependency and working perfectly

enter code h<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
</dependencies>ere
Biddut
  • 418
  • 1
  • 6
  • 17