Jakarta.servlet.ServletException: не удалось отправить обработчик: java.lang.NoClassDefFoundError: com/sun/xml/bind/api/JAXBRIContext"

Я работаю над миграцией версии Spring Parent-2.7.18 на версию 3.1.10 и использую версию Java 17.

Я получаю сообщение об ошибке ниже после миграции Spring-parent 2.xx на версию 3.xx.

jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: com/sun/xml/bind/api/JAXBRIContext
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1096)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)

Caused by: java.lang.NoClassDefFoundError: com/sun/xml/bind/api/JAXBRIContext

здесь я попробовал ниже зависимость (не все за раз) в pom.xml

      <dependency>
          <groupId>jakarta.xml.bind</groupId>
          <artifactId>jakarta.xml.bind-api</artifactId>
          <version>3.0.0</version>
      </dependency>
    
      <!-- JAXB RI, Jakarta XML Binding -->
      <dependency>
          <groupId>com.sun.xml.bind</groupId>
          <artifactId>jaxb-impl</artifactId>
          <version>3.0.0</version>
          <scope>runtime</scope>
      </dependency>

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>rt</artifactId>
        <version>2.3.1</version>
    </dependency>


    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.jws</groupId>
        <artifactId>javax.jws-api</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>rt</artifactId>
        <version>2.3.1</version>
    </dependency>

    <dependency>
        <groupId>javax.xml</groupId>
        <artifactId>jaxrpc-api</artifactId>
        <version>${rpc.version}</version>
    </dependency>

ты имеешь в виду весенний ботинок?

Pouya Rezaei 19.08.2024 14:52

Я предполагаю, что проблема связана с областями удаления областей из зависимостей.

Pouya Rezaei 19.08.2024 14:57

да, Spring-boot-starter-parent <version>3.1.10</version> мигрирует с 2.7.18

Rajendra Desale 20.08.2024 07:46
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не смешивайте javax с jakarta зависимостями. Spring Boot 3 использует Jakarta EE 10, и вам необходимо полностью обновить приложение, чтобы использовать только jakarta.

Запустите mvn dependency:tree, чтобы проверить, не добавляется ли в ваш проект прямая или транзитивная javax зависимость.

Чтобы помочь вам перейти на Jakarta EE 10, ознакомьтесь с рецептом Open Rewrite. Вы можете запустить его из командной строки Maven.

Да, правильно. заменил все необходимые javax на Jakarta зависимости.

Rajendra Desale 21.08.2024 05:30

Другие вопросы по теме