目录
问题
原因
解决
今天在开发一个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)
经过排查问题解决了,这里直接记录原因。
缺少MySQL JDBC驱动程序:该错误通常发生在您的应用程序中未正确配置和加载MySQL JDBC驱动程序的情况下。请确保您的项目配置正确,并且MySQL JDBC驱动程序(例如mysql-connector-java.jar文件)位于类路径中。
类路径问题:如果MySQL JDBC驱动程序位于类路径之外或无法正确访问,也会导致ClassNotFoundException。请检查类路径设置,并确保可以正确访问和加载MySQL JDBC驱动程序。
版本不匹配:如果您正在尝试使用不兼容的MySQL JDBC驱动程序版本,也可能会导致ClassNotFoundException。确保您的MySQL JDBC驱动程序版本与您的应用程序和MySQL数据库版本兼容。
编译错误:如果在编译过程中遇到问题(例如导入修饰符错误,驱动程序不存在等),也会导致ClassNotFoundException。在编译之前和期间,请仔细检查您的代码和依赖项。
解决方法包括:
我自己的项目产生的原因是由于“3.版本不匹配”问题导致的。经过排查“ mysql-connector-java.jar ”包 5XX开始的版本路径是:“com.mysql.jdbc.Driver”,而6XX及以上开始的版本路径是:“com.mysql.cj.jdbc.Driver” 。我自己将版本的包删除掉就可以了。
希望这个知识点可以帮助到大家