sprintboot啟動出現java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level


之前在LinuxMint下開發了一個項目,今天想在windows環境下跑一下,github Clone下來以后,一跑就出現了這個異常。

查了一下,這個類是屬於ch.qos.logback.classic這個包,在logback-classic這個jar里。

我使用的是Gradle構建,沒有顯示的依賴過這個包,了解發現,這個包是被spring-boot-starter-web依賴自動導入的。

IDEA View->Tool Windows->Gradle 查看,確實有這個依賴

File->Project Structure->Libraries里也顯示已經有這個依賴了

那為什么還會報出找不到類的錯誤呢?

原來問題出現在依賴的scope

還是Project Structure里面,在Modules里可以查看依賴,注意Scope那一欄

scope為Provided。

這里是Gradle的一個依賴配置選項

可以看到Provided表示,這個依賴只在編譯時可用,這就是為什么運行項目的時候,找不到這個依賴里的class的緣故

改成Compile就解決了!

PS:

其實,我在定義項目的依賴的時候,對spring-boot-starter-web,使用的是implementation修飾

應該也具有Compile配置的功效,但是他的傳遞依賴,卻沒有被配置成Compile。

不知道是IDEA的問題,還是我的項目在Linux和Windows之間切換造成的問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM