Java连接MySQL遇No suitable driver及ClassNotFoundException求助
解决Java连接MySQL的ClassNotFoundException问题
以下是针对你遇到问题的具体解决步骤:
1. 修正Driver类的全限定名
你使用的是MySQL Connector/J 8.0.33,这个版本的驱动类路径已经变更为com.mysql.cj.jdbc.Driver,但错误日志显示程序在查找旧版本的com.mysql.jdbc.Driver。把代码里的Class.forName语句改成:
Class.forName("com.mysql.cj.jdbc.Driver");
(注:从JDBC 4.0开始,其实可以不用手动调用Class.forName加载驱动,DriverManager会自动扫描类路径下的驱动类,但如果你的环境有特殊配置,保留修正后的语句也没问题)
2. 确保Maven依赖真正生效
- 执行Maven命令刷新依赖:
mvn clean install
- 在IDE中(比如IDEA),点击Maven面板的刷新按钮,确认依赖已经被正确下载并引入到项目中。如果之前手动添加过jar包,建议先移除,避免冲突,完全依赖Maven管理。
3. 检查运行时类路径配置
- 如果是手动添加jar包的方式,确保jar包被添加到运行时类路径:
在IDEA的Project Structure->Modules->Dependencies中,找到该jar包,将Scope设置为Compile或Runtime,不要设为Provided(Provided表示仅编译时可用,运行时不包含)。 - 如果是打包后运行,确保你的可执行jar包含MySQL驱动依赖:可以使用
maven-shade-plugin插件配置打包,把依赖一起打进jar包,示例配置如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>net.advancedbots.discordbot.DiscordBotPlugin</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
4. 验证JDBC URL格式(可选)
MySQL 8.0+要求URL指定时区,否则可能引发额外错误,建议把URL调整为:
String url = "jdbc:mysql://localhost:3306/bot?useSSL=false&serverTimezone=UTC";
内容的提问来源于stack exchange,提问作者JamesJames
相关产品推荐
相关产品推荐

