首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC驱动程序错误,无法连接到MySQL

问JDBC驱动程序错误,无法连接到MySQL
EN

Stack Overflow用户
提问于 2022-09-11 22:22:54
回答 1查看 263关注 0票数 0

当我运行试图连接到MySQL服务器的代码时,我一直收到错误消息。

代码语言:javascript
复制
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:375)

这是我的密码。我已经确保将连接器/J添加到类路径中,但仍然没有更改。

代码语言:javascript
复制
import java.sql.*;

public class App {
    
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/vehicle", "root", "root"); // For MySQL only

        vehicle focus = new vehicle("Ford", "Focus", 200, 2004, 3000);

        System.out.println(focus.getMake());
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-11 22:55:04

首先,使用Class.forName加载JDBC驱动程序是不必要的,因为JDBC4.0是在2006年提供的(该驱动程序将其实现注册为服务提供者,并将由ServiceLoader加载)。

只要去掉这一行,它就能工作了。如果您需要类名,最好参考Connector/J的文档,注意读取文档以获得正确的驱动程序版本,因为类名更改了(目前是com.mysql.cj.jdbc.Driver)。

更新

正如Mark所指出的那样,Class.forName("com.mysql.jdbc.Driver")将不会导致与较新版本的Connector/J一起使用的ClassNotFoundException。至少最新的驱动程序会产生警告:

加载类com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver‘。驱动程序是通过SPI自动注册的,手动加载驱动程序类通常是不必要的。

知道了这一点,删除Class.forName不会有帮助,因为异常仅仅意味着驱动程序不在类路径上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73682996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档