記一次配置文件報錯之Cannot resolve class or package 'jdbc'

  • 2019 年 10 月 5 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/qq_37933685/article/details/81814184

個人部落格:https://suveng.github.io/blog/​​​​​​​

記一次配置文件報錯之Cannot resolve class or package 『jdbc』

環境:

springboot 2.0.4

jdk1.8

idea 2018

報錯

如上圖所示,在springboot的配置文件application.xml中出現報錯。Cannot resolve class or package 『jdbc』

按照網路的解決辦法,把maven倉庫clean後install不能解決

然後我們來看詳細的報錯資訊,找不到包?如下圖,pom.xml文件中

思考

pom.xml的文件配置如上,scope 範圍指定為runtime,runtime 依賴在運行和測試系統的時候需要,但在編譯的時候不需要。所以運行時才需要,但是我還沒運行,所以idea不能找到我的包路徑。

依賴範圍控制哪些依賴在哪些classpath 中可用,哪些依賴包含在一個應用中。讓我們詳細看一下每一種範圍: compile (編譯範圍) compile是默認的範圍;如果沒有提供一個範圍,那該依賴的範圍就是編譯範圍。編譯範圍依賴在所有的classpath中可用,同時它們也會被打包。 provided (已提供範圍) provided 依賴只有在當JDK 或者一個容器已提供該依賴之後才使用。例如, 如果你開發了一個web 應用,你可能在編譯 classpath 中需要可用的Servlet API 來編譯一個servlet,但是你不會想要在打包好的WAR 中包含這個Servlet API;這個Servlet API JAR 由你的應用伺服器或者servlet 容器提供。已提供範圍的依賴在編譯classpath (不是運行時)可用。它們不是傳遞性的,也不會被打包。 runtime (運行時範圍) runtime 依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如,你可能在編譯的時候只需要JDBC API JAR,而只有在運行的時候才需要JDBC 驅動實現。 test (測試範圍) test範圍依賴 在一般的編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用。 system (系統範圍) system範圍依賴與provided 類似,但是你必須顯式的提供一個對於本地系統中JAR 文件的路徑。這麼做是為了允許基於本地對象編譯,而這些對象是系統類庫的一部分。這樣的構件應該是一直可用的,Maven 也不會在倉庫中去尋找它。如果你將一個依賴範圍設置成系統範圍,你必須同時提供一個 systemPath 元素。注意該範圍是不推薦使用的(你應該一直盡量去從公共或訂製的 Maven 倉庫中引用依賴)。 引用自http://blog.51cto.com/drizzlewalk/665590

解決方案

  1. 去掉scope
  2. 修改scope屬性為compile

其實兩種都是一樣的,因為沒寫,默認scope就是compile

Exit mobile version