Apache Derby驱动程序未自动加载

时间:2014-03-25 05:41:07

标签: java apache driver derby

我对为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();


现在我的问题是为什么我需要明确加载此驱动程序?我在Eclipse上运行我的数据库应用程序,引用了JRE7。为什么不自动加载?

2 个答案:

答案 0 :(得分: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初始化时搜索的类中。

答案 1 :(得分:0)

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