【问题标题】:Apache Derby Driver Not Loaded AutomaticallyApache Derby 驱动程序未自动加载
【发布时间】:2014-03-25 05:41:06
【问题描述】:

我对为 Apache Derby 加载数据库驱动程序感到困惑。 在它的文档中说:

"如果您的应用程序在 JDK 6 或更高版本上运行,则无需 显式加载 EmbeddedDriver。在那种环境下,司机 自动加载。” https://db.apache.org/derby/docs/10.7/devguide/cdevdvlp40653.html


我的连接网址是:

jdbc:derby:testdb;create=true


当我尝试在不加载驱动程序的情况下连接到 Java Derby 时,总是收到以下错误:

Error: java.sql.SQLException: No suitable driver found for jdbc:derby:testdb


如果我通过添加以下行显式加载驱动程序,错误就会消失。

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();


现在我的问题是为什么需要显式加载此驱动程序?我正在参考 JRE7 在 Eclipse 上运行我的数据库应用程序。为什么没有自动加载?

【问题讨论】:

    标签: java jdbc driver derby


    【解决方案1】:

    这种行为是 JDK 的 DriverManager 类的责任,而不是 Derby 本身的责任。您可以在此处阅读有关 DriverManager 类的信息:http://docs.oracle.com/javase/7/docs/api/java/sql/DriverManager.html

    Derby 所做的只是为 JDBC 驱动程序提供正确的 META-INF。

    我认为 DriverManager 的行为可能取决于您的 CLASSPATH 的详细信息。

    如果系统CLASSPATH中有derby.jar,会发生自动加载。但如果 derby.jar 位于具有单独类加载器的容器中,例如 servlet 容器、应用程序服务器或复杂的 IDE,则不在 DriverManager 初始化时搜索的类中。

    【讨论】:

      【解决方案2】:

      奇怪。我一直这样做(但不是使用 Eclipse)没有问题。您是否使用 DriverManger.getConnection() 来获取连接?我假设您使用的是 Derby 10.7 或更高版本?

      【讨论】:

        猜你喜欢
        • 2016-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        • 2014-07-17
        相关资源
        最近更新 更多