使用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的正确解决姿势内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • idea启动项目报端口号冲突或被占用的解决方法

    错误异常如下: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use: JVM_Bind 解决方法: 方法一: 1.win键 + R,输入cmd然后回车,进入DOS命令窗口 2.根据端口号查程序的进程号  netstat -ano | findstr 占用端口号(1099) 3. 根据程序的进程号

  • 使用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.

  • Android Studio三方引用报错但是项目可以运行的解决方案

    Android Studio第一次启动的Fetching android sdk component information的问题 1)进入刚安装的Android Studio目录下的bin目录.找到idea.properties文件,用文本编辑器打开. 2)在idea.properties文件末尾添加一行: disable.android.first.run=true ,然后保存文件. 3)关闭Android Studio后重新启动,便可进入界面. Android Studio 三方引用报错

  • 详解antd+react项目迁移vite的解决方案

    antd+react+webpack往往是以react技术栈为主的前端项目的标准组合,三者都有成熟的生态和稳定的表现,但随着前端圈的技术不断革新,号称下一代构建平台vite2的发布,webpack似乎不那么香了,为什么这么说呢,因为vite太快了.经过一段时间的尝试,决定在项目中把webpack替换成vite试试,遂写成本文分享给大家. Vite是什么 作为本文的主角,首先简单介绍一下vite这个构建工具,该工具是尤雨溪推出的[下一代前端开发和构建工具],vite其实也不是一个新的工具,早在一年

  • 解决MyEclipse下启动项目时JBoss内存溢出的问题

    配置1: -Xms64m -Xmx512m 配置2: -c default -b 0.0.0.0 -Xmx1024M -Xms512M -XX:MaxPermSize=256m 以上这篇解决MyEclipse下启动项目时JBoss内存溢出的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Mysql5.6启动内存占用过高解决方案

    vps的内存为512M,安装好nginx,php等启动起来,mysql死活启动不起来看了日志只看到对应pid被结束了,后跟踪看发现是内存不足被killed; 调整my.cnf 参数,重新配置(系统默认配置太高直接占用400M内存,小玩家玩不起呢)即可 performance_schema_max_table_instances=200 table_definition_cache=200 table_open_cache=128 下面附一个相关的my.cnf配置文件的说明 [client] po

  • SREng用法简要说明图文教程(如何获得日志/删启动项目/服务/驱动/BHO等)

    -----------------------------------teYqiu[天下无毒]原创文章,转载请标明.http://hi.baidu.com/teyqiu百度知道反病毒知识专家崔衍渠 授权. 『转载请保留所有版权信息及链接』-----------------------------------本文原始链接地址为:http://hi.baidu.com/teyqiu/blog/item/f706213fc52346ec54e72351.html请保留此链接以方便查看到我的最新更新.

  • SREng用法简要图文说明[如何获得日志/删启动项目/服务/驱动/BHO等]

    一.软件的下载 2006-12-25 SRENG 2.3正式发布!<--- 目前的最新版本1. SRENG的官方下载地址(免费软件) http://www.kztechs.com/sreng/download.html 2. SREng下载链接 (文件名:SREng[teyqiu].com)http://ishare.sina.com.cn/cgi-bin/fileid.cgi?fileid=1155409如果需要输入授权号 输入如下信息: 复制代码 代码如下: 用户名:teyqiu 授权号:2

  • Vue项目中跨域问题解决方案

    方法 后台更改header 使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建) Jquery jsonp 后台更改header header('Access-Control-Allow-Origin:*');//允许所有来源访问 header('Access-Control-Allow-Method:POST,GET');//允许访问的方式 使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建) 打开config/i

  • vue项目中常见问题及解决方案(推荐)

    webpack项目中自动引入全局scss变量文件 假设我们有一个公共的scss变量文件variables.scss /*存放所有全局变量*/ $card-title:#C7D200; //首页 卡片标题颜色 $bc-color:#182037; $hoverColor: #7abef9; //链接hover颜色 $fontColor: #E6EFFF; //字体颜色-白色 webpack要识别scss,需要先安装sass的loader npm install --save-dev sass-lo

  • Vue项目开发常见问题和解决方案总结

    Vue Cli 打包之后静态资源路径不对的解决方法 cli2版本: 将 config/index.js 里的 assetsPublicPath 的值改为 './' . build: { ... assetsPublicPath: './', ... } cli3版本: 在根目录下新建 vue.config.js 文件,然后加上以下内容:(如果已经有此文件就直接修改) module.exports = { publicPath: '', // 相对于 HTML 页面(目录相同) } Vue cli

随机推荐