之前在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之間切換造成的問題了。