使用IDEA啟動專案遇見ClassNotFoundException的解決方案
一. 錯誤現象
本地開發 SpringBoot 專案的時候,在整合 MyBatis 查詢資料庫的時候,使用 IDEA 啟動專案的時候,有時候會遇見如下的報錯:
Caused by: java.sql.SQLException: com.mysql.jdbc.Driver at com.alibaba.druid.util.JdbcUtils.createDriver ...... Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader.findClass(URLClassLoader.java:382) .......
二. 正確的解決姿勢
1. 是否添加了mysql 驅動
去 pom.xml 裡檢視是否添加了mysql 驅動。如果之前沒有新增,需要引入 mysql 的 jar 驅動:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
重新編譯後執行,如果還是報這個錯,看第 2 步。
2. 執行 mvn install
執行 IDEA 裡的 mvn install 命令,下載可能缺失的 jar 包。 如果重新編譯後執行還是不行,看第 3 步。
3. 檢查配置檔案是否有錯
.yml 和 .properties 的配置檔案對格式都有嚴格要求,確認一下自己的資料庫連線配置是否有格式錯誤。
比如:
行首和行位是否有空格之類的。 4. 找到原因
筆者按照前面的 3 個步驟反覆檢查確認,依然還是報這個錯誤,折騰了半天。會不會 IDEA 哪個地方的設定有問題。
命令列執行jar包
為了驗證猜想,於是進到 jar 包所在的工程目錄下面, 在命令列下直接使用java -jar 的方式啟動:
java -jar projectName.jar`
卻發現服務能夠正常啟動起來,沒有報java.lang.ClassNotFoundException這個錯誤。 由於我的專案是 SpringBoot 聚合工程,於是就猜測會不會是這個 模組下的依賴沒有被 IDEA 讀到呢?
驗證猜想
通過 File -> Project Structure -> Project Settings -> Modules 開啟 彈窗,選中該模組,在右側找到 Dependencies 選項卡並開啟,在下面會出現該模組依賴的 jar 包列表:
仔細找了一會兒,發現竟然沒有找到第 1 步新增的 mysql 的 jar 包。找到了問題的原因,下面就列出三種解決辦法。
5. 新增Module的 Dependencies
方式一
- 開啟新增 Dependencies 的彈窗
- 新增 mysql jar包
點 +
號,然後選擇 Library
:
點 Add Selected
儲存。
方式二 選中模組後右鍵
在彈出的選單中選擇 Reimport
,則會重新從 pom.xml 裡解析並下載依賴。
方式三
如果你在在開發過程中新建了一個模組,然後刪除了該模組,後邊又新建了一個相同名字的模組,則依賴也是引不進來的。 這是因為 IDEA 預設已經刪除的模組將不再使用,解決辦法:
開啟 專案目錄 .idea/misc.xml 檔案:
刪除掉圈紅的該行(對應你之前刪掉的模組名)
重新新建同名的模組,依賴就可以正常匯入。
三. 總結
- 遇到這種情況,先確認程式碼級別是否有什麼遺漏或者配置檔案是否格式有錯誤,注意不要忘記執行 clean 、install、package ;
- 可以在命令列執行 Jar 包:
如果仍然報同樣的錯誤,則還是在程式碼級別上有錯誤,需要仔細的排查;
如果不報錯,那就可以確定是 IDEA 在某處的設定有問題,比如 Jar 包的版本預設選擇不對、mvn選擇的版本過低、module 的依賴沒有引進來等。
到此這篇關於使用IDEA啟動專案遇見ClassNotFoundException的正確解決姿勢的文章就介紹到這了,更多相關使用IDEA啟動專案遇見ClassNotFoundException的正確解決姿勢內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!