Как разрешить java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException в Java 9

У меня есть код, который использует классы API JAXB, которые были предоставлены как часть JDK в Java 6/7/8. Когда я запускаю тот же код с Java 9, во время выполнения я получаю ошибки, указывающие, что классы JAXB не могут быть найдены.

Классы JAXB были предоставлены как часть JDK с Java 6, так почему Java 9 больше не может найти эти классы?

Ответ 1

API-интерфейсы JAXB считаются API-интерфейсами Java EE и поэтому больше не содержатся в пути к классам по умолчанию в Java SE 9. В Java 11 они полностью удалены из JDK.

Java 9 вводит понятия модулей, и по умолчанию агрегатный модуль java.se доступен на пути к классам (или, скорее, на пути к модулям). Как следует из названия, агрегатный модуль java.se не включает API-интерфейсы Java EE, которые традиционно поставлялись в комплекте с Java 6/7/8.

К счастью, эти API Java EE, которые были предоставлены в JDK 6/7/8, все еще находятся в JDK, но они просто не находятся на пути к классам по умолчанию. Дополнительные API Java EE предоставляются в следующих модулях:

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

Быстрое и грязное решение: (только JDK 9/10)
Чтобы сделать API JAXB доступными во время выполнения, укажите следующий параметр командной строки:
--add-modules java.xml.bind

Но мне все еще нужно это для работы с Java 8 !!!
Если вы попытаетесь указать --add-modules со старым JDK, он взорвется, потому что это неопознанная опция. Я предлагаю один из двух вариантов:

  1. Вы можете установить любые опции Java 9+ only, используя переменную окружения JDK_JAVA_OPTIONS. Эта переменная среды автоматически читается с помощью средства запуска java для Java 9+.
  2. Вы можете добавить -XX:+IgnoreUnrecognizedVMOptions, чтобы заставить JVM беззвучно игнорировать нераспознанные параметры вместо взрыва. Но будьте осторожны! Любые другие используемые вами аргументы командной строки больше не будут проверяться JVM. Этот параметр работает с Oracle/OpenJDK, а также с IBM JDK (начиная с JDK 8sr4)

Альтернативное быстрое решение: (только JDK 9/10)
Обратите внимание, что вы можете сделать все вышеперечисленные модули Java EE доступными во время выполнения, указав опцию --add-modules java.se.ee. Модуль java.se.ee является агрегатным модулем, который включает в себя java.se.ee, а также вышеупомянутые модули API Java EE.


Надлежащее долгосрочное решение: (JDK 9 и выше)

Все перечисленные выше модули API Java EE помечены @Deprecated(forRemoval=true), потому что они запланированы для удаления в Java 11. Таким образом, подход --add-module больше не будет работать в Java 11 из коробки.

То, что вам нужно будет сделать в Java 11 и более поздних версиях, - это включить свою собственную копию API Java EE в путь к классу или к модулю. Например, вы можете добавить API JAX-B в виде зависимости maven, например:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

Подробную информацию о модульности Java см. в JEP 261: модульная система

. Для разработчиков Gradle или Android Studio: (JDK 9 и выше)

Добавьте следующие зависимости в файл build.gradle:

dependencies {
    // JAX-B dependencies for JDK 9+
    implementation "javax.xml.bind:jaxb-api:2.2.11"
    implementation "com.sun.xml.bind:jaxb-core:2.2.11"
    implementation "com.sun.xml.bind:jaxb-impl:2.2.11"
    implementation "javax.activation:activation:1.1.1"
}

Ответ 2

В моем случае (весенний загрузочный толстый кувшин) я просто добавляю следующее в pom.xml.

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

Ответ 3

Ни один из этих решений не работал для меня в недавнем JDK 9.0.1.

Я обнаружил, что этого списка зависимостей достаточно для правильной работы, поэтому вам не нужно явно указывать --add-module (хотя он указан в этих зависимостях pom's). Вам нужно только указать этот список зависимостей:

<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>

Ответ 4

Это сработало для меня:

<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>

Обновить

Как предложил @Jasper, чтобы избежать зависимости от всей библиотеки EclipseLink, вы также можете просто зависеть от EclipseLink MOXy:

специалист

<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'

В качестве зависимостей для моего приложения Java 8, которое создает *.jar, который может выполняться как JRE 8, так и JRE 9 без дополнительных аргументов.

Кроме того, это должно быть выполнено где-то до использования JAXB API:

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

До сих пор прекрасно работает, как обходной путь. Не похоже на идеальное решение, хотя...

Ответ 5

это потому, что Java-версия, если вы используете JDK 9 или более позднюю версию, просто добавьте это в свой POM

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

Ответ 6

Во время компиляции, а также времени выполнения добавьте переключатель --add-modules java.xml.bind

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

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

Хорошее введение модулей JDK 9 также можно найти по адресу: https://www.youtube.com/watch?v=KZfbRuvv5qc

Ответ 7

чистое решение для всех JDK> = 9

Вам нужно добавить две зависимости к вашей сборке

  • jaxb-api
  • реализация jaxb

В качестве реализации я решил использовать эталонную реализацию с помощью стеклянной рыбы, чтобы избавиться от старых классов/библиотек com.sun. Таким образом, я добавил в свою сборку maven

<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>

Обратите внимание, что из версии 2.3.1 вам больше не нужно добавлять javax.activation. (см. https://github.com/eclipse-ee4j/jaxb-ri/issues/1222)

Ответ 8

Чтобы решить эту проблему, я импортировал некоторые JAR файлы в свой проект:

  • 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-апи-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-ядро-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-осущ-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. Загрузите файлы и скопируйте их в папку libs в проекте.
  2. Добавьте импортированные файлы JAR в путь сборки Java

Ответ 9

Вы можете использовать параметр --add-modules=java.xml.bind JVM для добавления модуля привязки xml в среду выполнения JVM.

Например: java --add-modules=java.xml.bind XmlTestClass

Ответ 10

Это сработало для меня. Добавление только jaxb-api было недостаточно.

        <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>

Ответ 11

Обновление апреля 2019

Changelong для релизов JAXB находится по адресу https://javaee.github.io/jaxb-v2/doc/user-guide/ch02.html.

выдержки:

    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

Официальная ссылка на https://github.com/eclipse-ee4j/jaxb-ri#maven-artifacts

Maven координаты для артефактов JAXB

jakarta.xml.bind: jakarta.xml.bind-api: классы API для JAXB. Требуется для компиляции с JAXB.

org.glassfish.jaxb: jaxb-runtime: реализация JAXB, среда выполнения, используемая для сериализации и десериализации java-объектов в/из xml.

Пучки JAXB:

com.sun.xml.bind: jaxb-impl: JAXB жирная банка времени выполнения.

В отличие от артефактов org.glassfish.jaxb, в этих jar файлах есть все классы зависимостей. Эти артефакты не содержат дескрипторов модулей JPMS. В проектах Maven вместо них предполагается использование артефактов org.glassfish.jaxb.

org.glassfish.jaxb: jaxb-runtime: jar: 2.3.2 загружает:

[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

Оригинальный ответ

После Какие артефакты я должен использовать для JAXB RI в моем проекте Maven? в Maven вы можете использовать профиль как:

<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> 

Дерево зависимостей показывает:

[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

Чтобы использовать это в Eclipse, скажем, Oxygen.3a Release (4.7.3a) или новее, Ctrl-Alt-P или щелкните правой кнопкой мыши на проекте Maven, затем выберите профиль.

Ответ 12

Перейдите в свой Build.gradle и добавьте зависимости ниже для Java 9 или 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'

Ответ 13

Для Java Web Start Execution мы можем использовать предложение Энди Гиберт следующим образом:

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

Обратите внимание на дополнительные "=" в -add-modules. См. этот билет OpenJDK или последнее примечание в разделе "Понимание предупреждений о доступе к времени" Платформа Java Platform, стандартная версия Oracle JDK 9 Руководство по миграции.

Ответ 14

добавить javax.xml.bind зависимость в pom.xml

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

Ответ 15

Я следил за этим URL-адресом, и приведенные ниже настройки действительно помогли мне. Я использую Java 10 с STS IDE в Macbook Pro. Отлично работает.

   <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>

Ответ 16

Я столкнулся с той же проблемой, используя Spring Boot 2.0.5.RELEASE на Java 11.

Добавление javax.xml.bind:jaxb-api:2.3.0 не javax.xml.bind:jaxb-api:2.3.0 проблему. Мне также пришлось обновить Spring Boot до последней 2.1.0.M2 Milestone 2.1.0.M2, поэтому я предполагаю, что это будет исправлено в следующей официальной версии.

Ответ 17

Это решило мои проблемы с зависимостями, работающими под управлением Apache Camel 2.24.1 на 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>

Ответ 18

Не ответ, но добавление: я получил, потому что бежал groovysh (Groovy 2.4.13), если JAVA_HOME указывает на установку Java 9 (точнее, java version "9.0.1") терпит неудачу:

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

Решение заключалось в следующем:

  • Перейдите в проект JAXB в github.io("JAXB лицензируется по двойной лицензии - CDDL 1.1 и GPL 2.0 с исключением класса")

  • Загрузить jaxb-ri-2.3.0.zip

  • Разархивируйте, куда бы вы не поместили файлы инфраструктуры java (в моем случае, /usr/local/java/jaxb-ri/). Другое решение может существовать (возможно, через SDKMAN, я не знаю)

  • Убедитесь, что банки в подкаталоге lib находятся в CLASSPATH. Я делаю это через скрипт, запущенный при запуске bash, называемый /etc/profile.d/java.sh, где я добавил (среди многих других строк) следующий цикл:

Упакован в функцию...

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

И это работает!

Ответ 19

Поскольку JavaEE теперь регулируется https://jakarta.ee/, новые координаты Maven с 2.3.2:

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

Первый выпущенный jaxb.version - 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>

Ответ 20

ОК, у меня возникла такая же проблема, но я использовал Java 8 и продолжал получать эту ошибку, я попробовал большинство решений. но оказывается, что мой maven все еще указывал на java 9, хотя я установил глобальную версию Java на 8, как только исправил, что все заработало.

Для тех, кто может иметь такие проблемы, ознакомьтесь с Как исправить Maven для использования Java по умолчанию

Ответ 21

Старый ответ "Проблема решена переключением на amazoncorretto". Ответ в новостях: Я использовал самую последнюю версию corretto, но похож на jdk 1.8. так что в любом случае нам нужно добавить зависимости вручную

Ответ 22

Лучшим решением в долгосрочной перспективе является добавление зависимости Maven.

При необходимости объявите новый профиль, отличный от стандартного для Java 9, и установите там зависимость. Таким образом, вы можете плавно перемещаться.

Ответ 23

Для меня в Java 11 и Gradle это то, что сработало:

plugins {
      id 'java'
}

dependencies {
      runtimeOnly 'javax.xml.bind:jaxb-api:2.3.1'
}

Ответ 24

Вам нужно добавить jaxb-зависимости в maven. Версия 2.3.2 Glassfish полностью совместима с новой версией Jakarta EE jaxb api 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>

Ответ 25

Я знаю, что опаздываю на вечеринку, но моя ошибка закончилась тем, что мне нужно другое решение... тоже очень просто

Первоначально я деполировал на Tomcat 9 и понял, что мне нужно 7... Я забыл отобразить свой путь к классу обратно в 7 версию в build.xml

Надеюсь, это исправит ошибку кого-то еще в будущем, кому удастся пропустить эту простую проблему, как я!

Ответ 26

Это сработало для меня, у меня есть весенний загрузочный проект, который компилируется в Java 8, но я не знаю, почему однажды мой maven начал компилировать с Java 11, в Ubuntu я использовал его для исправления:

sudo update-java-alternatives  -l

Это показало мне доступный JDK на моем компьютере:

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

Итак, я наконец запустил эту команду, чтобы выбрать желаемую:

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

И что это, для большего взгляда на Как использовать альтернативы обновления команды

Ответ 27

Версии зависимостей, которые мне нужно было использовать при компиляции для цели Java 8. Протестировано приложение в Java 8, 11 и 12 JRE.

        <!-- replace dependencies that have been removed from JRE 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 starting with Java v11 -->

Ответ 28

Если вы вызываете веб-службы SOAP (например, используя jaxws-maven-plugin), просто добавив эту зависимость, все ошибки JAXB исчезнут:

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

Протестировано с Java 13

Ответ 29

у меня были похожие проблемы после обновления моего проекта до java 11, а затем исправлено обновление до весенней загрузки 2.1.1, которая, очевидно, имеет поддержку java 11, это помогло