与Java DB的连接始终失败

时间:2017-08-01 09:12:23

标签: java database derby

Java DB的文档说它与JDK捆绑在一起,我已经读过在以后的Java版本中不需要特殊的类加载(我有Java 8)。但是,尝试连接到它完全失败:

DriverManager.getConnection("jdbc:derby:testDB;create=true")

抛出SQLException,SQL状态为08001(连接失败)。

我也试过显式加载驱动程序类,但它也会抛出错误:

Class.forName("org.apache.derby.jdbc.ClientDriver");// ClassNotFoundException

下面的代码甚至无法编译,因为找不到derby类:

DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());

如何使用Java DB连接数据库?

1 个答案:

答案 0 :(得分:0)

要使用“内置”Java DB,您必须手动将derby jar添加到类路径中。这就是我在Gradle中的表现:

testCompile files("$System.env.JAVA_HOME/db/lib/derby.jar")

我不喜欢这个,因为这意味着你依赖于本地目录结构,而不是通过名称和版本号解析的普通依赖项。

我原本希望“Java DB”能够完全集成到标准库中,但事实并非如此。它与每个JDK安装简单地共存。由于这有一个通常是过时的德比版本的额外缺点,我将忽略Java DB并且只使用来自maven central的最新derby版本:

testCompile group: 'org.apache.derby', name: 'derby', version: '10.13.1.1'

另请注意,先前需要的Class.forName(...)语句仍会引发ClassNotFoundException;该声明不需要让德比工作。