日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java.lang.ClassNotFoundException: retrofit2.Retrofit$Builder解决思路

發布時間:2025/3/11 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java.lang.ClassNotFoundException: retrofit2.Retrofit$Builder解决思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ClassNotFoundException報錯

    • 具體問題
    • 報錯詳情
    • 推測可能是jar包問題
    • 問題總結自定義依賴缺少依賴jar

具體問題

Caused by: java.lang.NoClassDefFoundError: retrofit2/converter/simplexml/SimpleXmlConverterFactory

報錯詳情

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: retrofit2/Retrofit$Builderat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)...

java.lang.NoClassDefFoundError: retrofit2/Retrofit$Builder
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006)

推測可能是jar包問題

Retrofit是一個自定義jar包中的pom依賴(jar包被引入到項目中依賴)。

<dependency><groupId>com.squareup.retrofit2</groupId><artifactId>retrofit</artifactId><version>2.5.0</version></dependency>

打開terminal,定位到工程pom.xml所在的目錄,執行 mvn dependency:tree 打印maven依賴關系樹 。

mvn dependency:tree

如果你的操作系統環境定義了多個本地maven repo的配置,則需要在后面帶上你的setttings.xml配置。
例如:

mvn dependency:tree -settings C:\Users\z00402970\2.0_iocm\settings.xml

打印結果:

[INFO] Scanning for projects... [INFO] [INFO] ----------------------< net.ering.van:van-share >----------------------- [INFO] Building van-lte-boot 0.0.1-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-dependency-plugin:3.0.2:tree (default-cli) @ van-share --- [INFO] net.ering.van:van-share:jar:0.0.1-SNAPSHOT [INFO] +- org.testng:testng:jar:6.9.10:test [INFO] | +- com.beust:jcommander:jar:1.48:test [INFO] | \- org.beanshell:bsh:jar:2.0b4:test [INFO] +- org.mockito:mockito-all:jar:1.10.19:test [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.0.4.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.0.4.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.4.RELEASE:compile [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile [INFO] | | | | \- ch.qos.logback:logback-core:jar:1.2.3:compile [INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile [INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.10.0:compile ... [INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.321 s [INFO] Finished at: 2020-10-14T15:28:11+08:00 [INFO] ------------------------------------------------------------------------

打印結果中檢索servlet

[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided

發現其他的基本都是compile,而servlet是provided結尾,是項目pom中加上了scope限制

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet-version}</version><scope>provided</scope></dependency>

回到報錯信息第一行,鼠標點擊顯示如下:

說明tomcat中也有servlet-api包,provided可以避免發生沖突。
因為provided表示該包只在編譯和測試的時候用,所以,當啟動tomcat的時候,tomcat中的servlet-api就不會和javax.servert的依賴沖突了。
這個provided的只在編譯和測試期有效,已提供范圍的依賴在編譯classpath 可用,運行時不可用。并且不被傳遞。

問題總結自定義依賴缺少依賴jar

最后發現是引入的自定義依賴的源碼缺少了Retrofit的依賴的引入。

總結

以上是生活随笔為你收集整理的java.lang.ClassNotFoundException: retrofit2.Retrofit$Builder解决思路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。