java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 异常解决
作者:mmseoamin日期:2023-12-14

 

目录

问题

原因

解决


java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 异常解决,第1张

        今天在开发一个DB同步工具的时候,因为采用的是原生的jdbcDriver链接数据库的,代码如下“ Class.forName(this.jdbcDriver); ”,我这边的配置是“ "jdbcDriver":"com.mysql.cj.jdbc.Driver" ”,当程序走到这一行的时候就报错“ java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver ”。当时我就很纳闷,明明依赖、配置都有为啥找不到对应的类呢。接下来咱们看看如何解决这个问题。

问题

        当程序执行到“ Class.forName(this.jdbcDriver); ”的时候报如下错误:

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)

原因

        经过排查问题解决了,这里直接记录原因。

  1. 缺少MySQL JDBC驱动程序:该错误通常发生在您的应用程序中未正确配置和加载MySQL JDBC驱动程序的情况下。请确保您的项目配置正确,并且MySQL JDBC驱动程序(例如mysql-connector-java.jar文件)位于类路径中。

  2. 类路径问题:如果MySQL JDBC驱动程序位于类路径之外或无法正确访问,也会导致ClassNotFoundException。请检查类路径设置,并确保可以正确访问和加载MySQL JDBC驱动程序。

  3. 版本不匹配:如果您正在尝试使用不兼容的MySQL JDBC驱动程序版本,也可能会导致ClassNotFoundException。确保您的MySQL JDBC驱动程序版本与您的应用程序和MySQL数据库版本兼容。

  4. 编译错误:如果在编译过程中遇到问题(例如导入修饰符错误,驱动程序不存在等),也会导致ClassNotFoundException。在编译之前和期间,请仔细检查您的代码和依赖项。

解决方法包括:

  • 确保正确配置和加载MySQL JDBC驱动程序,并确保它位于类路径中。
  • 检查类路径设置,以确保可以正确访问和加载MySQL JDBC驱动程序。
  • 确保MySQL JDBC驱动程序版本与应用程序和MySQL数据库版本兼容。
  • 检查编译时是否存在任何错误,并修复它们。
  • 如果以上方法均无效,尝试重新下载和安装适用于您的应用程序和MySQL数据库版本的 MySQL JDBC驱动程序。

    解决

    我自己的项目产生的原因是由于“3.版本不匹配”问题导致的。经过排查“ mysql-connector-java.jar ”包 5XX开始的版本路径是:“com.mysql.jdbc.Driver”,而6XX及以上开始的版本路径是:“com.mysql.cj.jdbc.Driver” 。我自己将版本的包删除掉就可以了。

    希望这个知识点可以帮助到大家