使用IDEA啓動項目碰見ClassNotFoundException的正確解決姿式

一. 錯誤現象

本地開發 SpringBoot 項目的時候,在集成 MyBatis 查詢數據庫的時候,使用 IDEA 啓動項目的時候,有時候會碰見以下的報錯:java

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 驅動:mysql

<dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  </dependency>

從新編譯後運行,若是仍是報這個錯,看第 2 步。sql

2. 執行 mvn install

執行 IDEA 裏的 mvn install 命令,下載可能缺失的 jar 包。 若是從新編譯後運行仍是不行,看第 3 步。數據庫

3. 檢查配置文件是否有錯

.yml 和 .properties 的配置文件對格式都有嚴格要求,確認一下本身的數據庫鏈接配置是否有格式錯誤。
好比:微信

  • 行首和行位是否有空格之類的。

4. 找到緣由​

筆者按照前面的 3 個步驟反覆檢查確認,依然仍是報這個錯誤,折騰了半天。會不會 IDEA 哪一個地方的設置有問題。maven

命令行執行jar包

爲了驗證猜測,因而進到 jar 包所在的工程目錄下面, 在命令行下直接使用java -jar 的方式啓動:ide

`java -jar projectName.jar`

卻發現服務可以正常啓動起來,沒有報java.lang.ClassNotFoundException這個錯誤。 因爲個人項目是 SpringBoot 聚合工程,因而就猜想會不會是這個 模塊下的依賴沒有被 IDEA 讀到呢?ui

驗證猜測

經過 File -> Project Structure -> Project Settings -> Modules 打開 彈窗,選中該模塊,在右側找到 Dependencies 選項卡並打開,在下面會出現該模塊依賴的 jar 包列表:
dependencies1.png
仔細找了一下子,發現居然沒有找到第 1 步添加的 mysql 的 jar 包。
找到了問題的緣由,下面就列出三種解決辦法。idea

5. 添加Module的 Dependencies

方式一
  • 打開添加 Dependencies 的彈窗
  • 添加 mysql jar包

+號,而後選擇 Library
dependencies3.png
Add Selected 保存。spa

方式二
  • 選中模塊後右鍵

maven1.png
在彈出的菜單中選擇Reimport,則會從新從 pom.xml 裏解析並下載依賴。

方式三

若是你在在開發過程當中新建了一個模塊,而後刪除了該模塊,後邊又新建了一個相同名字的模塊,則依賴也是引不進來的。 這是由於 IDEA 默認已經刪除的模塊將再也不使用,解決辦法:

  1. 打開 項目目錄 .idea/misc.xml 文件:

misc.png
刪除掉圈紅的該行(對應你以前刪掉的模塊名)

  1. 從新新建同名的模塊,依賴就能夠正常導入。

三. 總結

  1. 遇到這種狀況,先確認代碼級別是否有什麼遺漏或者配置文件是否格式有錯誤,注意不要忘記執行 clean 、install、package ;
  2. 能夠在命令行執行 Jar 包:

    • 若是仍然報一樣的錯誤,則仍是在代碼級別上有錯誤,須要仔細的排查;
    • 若是不報錯,那就能夠肯定是 IDEA 在某處的設置有問題,好比 Jar 包的版本默認選擇不對、mvn選擇的版本太低、module 的依賴沒有引進來等。

關注微信公衆號

歡迎你們關注個人微信公衆號閱讀更多文章:
微信公衆號二維碼.jpg

相關文章
相關標籤/搜索