Rajesh kothari
Rajesh kothari

Reputation: 3

Upgrade to SpringBoot 3 throws javax.xml.bind.JAXBException

`Hi,

I am trying to upgrade my project to springboot 3.1.6 from 2.6.7 apache cxf(4.0.1) howver it is throwing error as Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

I tried multiple things like updating dependecy to below

implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0'
implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.0'`

however it still throws the error. my gradle file looks like

`import io.mateo.cxf.codegen.wsdl2java.Wsdl2Java
plugins {
    id "io.spring.dependency-management" version "3.1.6"
    id "org.springframework.boot" version "3.1.6"
    id 'java'
    id "io.mateo.cxf-codegen" version "1.0.0"
    id 'org.hidetake.swagger.generator' version '2.19.2'
}`

`dependencies {
    
    compileOnly "javax.servlet:javax.servlet-api:4.0.1"      
    implementation 'com.sun.xml.ws:jaxws-rt:4.0.0'
    compileOnly "jakarta.xml.ws:jakarta.xml.ws-api:2.3.3"
    compileOnly "jakarta.jws:jakarta.jws-api:1.1.1"
    cxfCodegen "jakarta.xml.ws:jakarta.xml.ws-api:2.3.3"
    cxfCodegen "jakarta.annotation:jakarta.annotation-api:1.3.5"
    cxfCodegen "ch.qos.logback:logback-classic:1.2.10"
    implementation "org.apache.cxf:cxf-spring-boot-starter-jaxws:4.0.1"
    implementation "org.apache.cxf:cxf-rt-features-logging:4.0.1"
    implementation "org.springframework.boot:spring-boot-starter-web-services"
    compileOnly 'org.apache.commons:commons-lang3:3.12.0'   
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0'
    implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.0'

}

Can you suggest what could be the problem?

Any help will be highly appreciated. thanks

I tried multiple things like updating dependecy to below

implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0'
implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.0'
implementation 'javax.xml.bind:jaxb-api:2.3.0'
implementation 'com.sun.xml.ws:jaxws-rt:4.0.0'

Upvotes: 0

Views: 9749

Answers (1)

Laurent Schoelens
Laurent Schoelens

Reputation: 2848

The following dependencies (minimum) are javax-based version and shouldnt be present with current config

jakarta.xml.ws:jakarta.xml.ws-api:2.3.3
jakarta.annotation:jakarta.annotation-api:1.3.5
jakarta.jws:jakarta.jws-api:1.1.1

You should move to the following and ensure all your dependencies are jakarta-packaged (and not only jakarta-named) :

jakarta.xml.ws:jakarta.xml.ws-api:4.0.1
jakarta.annotation:jakarta.annotation-api:2.1.1
jakarta.jws:jakarta.jws-api:3.0.0

The gradle plugin for generating the classes from wsdl should also be upgraded to 2.2.0 version (2.2.0 version points to cxf 4.x which is jakarta based)

io.mateo.cxf-codegen:2.2.0

Upvotes: 1

Related Questions