Я работаю над миграцией версии 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>
Я предполагаю, что проблема связана с областями удаления областей из зависимостей.
да, Spring-boot-starter-parent <version>3.1.10</version> мигрирует с 2.7.18
Не смешивайте javax
с jakarta
зависимостями. Spring Boot 3 использует Jakarta EE 10, и вам необходимо полностью обновить приложение, чтобы использовать только jakarta
.
Запустите mvn dependency:tree
, чтобы проверить, не добавляется ли в ваш проект прямая или транзитивная javax
зависимость.
Чтобы помочь вам перейти на Jakarta EE 10, ознакомьтесь с рецептом Open Rewrite. Вы можете запустить его из командной строки Maven.
Да, правильно. заменил все необходимые javax
на Jakarta
зависимости.
ты имеешь в виду весенний ботинок?