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

Вы также можете указать имя TNS в URL-адресе JDBC, как показано ниже

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))
616
задан hennr 16 March 2019 в 21:43
поделиться

9 ответов

Я следовал по этому 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>
6
ответ дан itsraghz 16 March 2019 в 21:43
поделиться

Во время компиляции, а также во время выполнения, добавьте переключатель --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

17
ответ дан Tarunn 16 March 2019 в 21:43
поделиться

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

Чангелонг для релизов 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, в этих банках есть все классы зависимостей, включенные внутрь. Эти артефакты не содержат дескрипторов модулей 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, затем выберите профиль.

7
ответ дан JasonPlutext 16 March 2019 в 21:43
поделиться

Для меня в Java 11 и gradle это - то, что удалось:

plugins {
      id 'java'
}

dependencies {
      runtimeOnly 'javax.xml.bind:jaxb-api:2.3.1'
}
1
ответ дан 22 November 2019 в 21:33
поделиться

Необходимо добавить jaxb зависимости к знатоку. Версия 2.3.2 реализации glassfish совершенно совместима с новой Джакартой EE jaxb версия 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>
API
1
ответ дан 22 November 2019 в 21:33
поделиться

Это решило мои проблемы с зависимостями рабочий Camel Apache 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>
4
ответ дан 22 November 2019 в 21:33
поделиться

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

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

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

0
ответ дан 22 November 2019 в 21:33
поделиться

Решение для системы онлайн бронирования

libraryDependencies += "javax.xml.bind" % "jaxb-api" % "2.3.1"
0
ответ дан 22 November 2019 в 21:33
поделиться

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

1
ответ дан 22 November 2019 в 21:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: