我是 Java 和 Gradle 的新手,我正在嘗試構建一個簡單的 REST API,這是我的依賴項
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web:2.7.0'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
implementation("org.springframework.boot:spring-boot-starter-actuator:2.6.7")
implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359'
implementation 'com.sun.xml.bind:jaxb-core:4.0.0-M4'
implementation 'com.sun.xml.bind:jaxb-impl:4.0.0-M4'
}
我收到以下錯誤:
java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
我見過類似的問題,但找不到解決方案
uj5u.com熱心網友回復:
您的 JAXB API 和實作版本不匹配。jaxb-core 4.0.0-M4依賴于jakarta.xml.bind:jakarta.xml.bind-api 4.0.0。這與您的 JAXB API 版本完全不兼容。最大的區別是您的 JAXB API 版本使用javax
包前綴,而 Jakarta API 版本使用jakarta
包前綴。我猜 Spring 想要使用與您正在使用的 API 版本兼容的實作(Spring 尚未切換到 Jakarta EE 9)。
我正在檢查是否有 JAXB 的 Spring Boot 啟動器或類似的東西,但我找不到任何東西。這意味著您可能需要提供自己的實作。我建議您改用 Jakarta EE 8 版本:https ://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api/2.3.3用于 API,https://mvnrepository .com/artifact/org.glassfish.jaxb/jaxb-runtime/2.3.6用于實作。兩者都是仍然使用javax
包前綴的最新版本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/484407.html