Java连接MySQL遇报错:找不到合适驱动/类未找到,求排查解决
Java访问MySQL驱动加载问题
环境信息
- 操作系统:Ubuntu 20.04.5 LTS (GNU/Linux 5.15.79.1-microsoft-standard-WSL2 x86_64)
- MySQL版本:Ver 8.0.31-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
- Java版本:javac 11.0.17
- MySQL驱动包:
mysql-connector-j-8.0.31.jar(已通过jar tf /usr/share/java/mysql-connector-j-8.0.31.jar确认包含com/mysql/cj/jdbc/Driver.class)
操作与报错情况
编译命令
javac -cp /usr/share/java/mysql-connector-j-8.0.31.jar TestApplication.java
运行命令
java TestApplication
报错详情
- 未显式加载驱动时:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/opiejbc1
- 添加
Class.forName("com.mysql.cj.jdbc.Driver")后:
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
问题原因
编译时指定了驱动包作为类路径,但运行时没有将驱动包加入类路径,导致JVM无法找到驱动类文件。
解决方案
运行命令时必须同样指定类路径,包含当前目录(编译生成的.class文件所在位置)和驱动包路径:
java -cp .:/usr/share/java/mysql-connector-j-8.0.31.jar TestApplication
.代表当前目录,确保JVM能找到编译后的TestApplication.class:是Linux系统下类路径的分隔符(Windows系统用;)- 后面跟着驱动包的完整路径,让JVM能加载到MySQL驱动类
补充说明:Java 8及以上(JDBC 4.2规范)支持驱动自动加载,只要驱动包在类路径中,无需显式调用Class.forName,修正运行类路径后可去掉该行代码。
内容的提问来源于stack exchange,提问作者Jesse Brent Coats
相关产品推荐
相关产品推荐

