mysql - Java DriverManager不加载Mysql驱动

标签 mysql tomcat jdbc driver

Java DriverManager不加载Mysql驱动

DriverManager
    static {
        loadInitialDrivers();
        println("JDBC DriverManager initialized");
    }

Mysql jdbc驱动在Tomcat库下。

  tomcat/lib/mysql-jdbc.jar

在调试器中,在调用 DriverManager.getDriver(URL) 之前,断点是 在方法 loadInitialDrivers() 中设置,但执行不会在那里停止。是静态方法,类加载的时候,调用的是静态方法吗?

已加载的驱动程序列表 (registeredDrivers) 为空。

更新

将ojdbc6.jar添加到tomcat/lib中,然后重启tomcat。 DriverManager 没有 加载驱动程序。可能是什么问题?似乎 tomcat 忽略了 tomcat/lib 目录下的所有 JDBC jar。

也尝试过:将 jdbc 驱动程序复制到 webapps/myapp/WEB-INF/lib,但没有帮助。

最佳答案

从简单的 Java 应用程序运行 SQL 与从 JEE 服务器(例如 Tomcat)运行 SQL 有很大不同(好吧……至少是半个 JEE 服务器)。

不要使用static 初始值设定项。相反,JEE(Java 企业版)的做法有所不同,原因有很多:

  • 在 Tomcat 中,您不需要“加载”驱动程序。只需将它放在 TOMCAT_HOME/lib 中并重新启动 Tomcat。就是这样。驱动程序已经加载。在启动时查看 Tomcat 日志,您会看到它。 Tomcat(就像任何 JEE 服务器一样)负责加载它。

  • 然后,您需要做的是创建一个 JDBC 数据源。有很多关于如何做到这一点的例子。您可以通过修改 conf/server.xml 文件并重新启动 Tomcat 来完成此操作。确保给数据源起一个你记得的名字;您将在下一步中使用它。在启动时再次查看 Tomcat 的日志文件,您会看到正在注册/创建的全新数据源。

  • 接下来,在您的 JEE 代码中,使用您在上一步中配置的名称从 JNDI 目录中检索数据源,并使用它创建一个连接。同样,有很多关于如何执行此操作的示例。

  • 最后,使用 Connection,您可以运行所有您想要的 SQL 语句。这是您已经熟知的部分。像往常一样做。

关于mysql - Java DriverManager不加载Mysql驱动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750789/

相关文章:

mysql_install_db 给出错误

java - UnsupportedClassVersionError 异常阻止 Tomcat 启动

java - 在负载下收集 Java heapdump

azure - Azure Bitnami 中的 tomcat 或 root 密码

postgresql - Macaddr/Inet 类型的 postgres in slick

java - 程序拒绝从 MySQL 数据库获取字符串

mysql - 如何对另一列中每个不同值的列值求和

mysql - 使用多个表时 MySQL 中会发生什么

php - 我如何创建一个系统来计算上次看到的时间

java - 如何使用 SQL 查询删除列与任何集合匹配的行?