2017-08-01 82 views
0

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

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

这会引发SQLException,SQL状态为08001(连接失败)。

我也尝试过明确的加载驱动程序类,但它也引发一个错误:

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

下面的代码甚至不能编译,因为德比类都没有发现:

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

怎么办我使用Java DB连接到数据库?

+1

这很明显。将该jar添加到您的项目 –

+1

它仅在具有特定JDK版本的运行时类路径中以及某些Java供应商中自动进行。它从来没有在** compile **类路径中,你总是必须在那里明确地添加它。 –

回答

0

要使用“内置”Java DB,您必须手动将derby jar添加到类路径中。这是我做到了在摇篮:

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

我不喜欢这一点,因为这意味着你是依赖于本地目录结构,而不是其名称和版本号解决正常的依赖。

我曾预计“Java DB”会完全集成到标准库中,但事实并非如此。它只是与每个JDK安装共同使用。由于这种具有一般是一个过时的德比发布的另外一个缺点,我会忽略的Java DB,只是使用来自中央Maven的最新版本德比:

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

还要注意的是,以前需要Class.forName(...)声明还抛出ClassNotFoundException;该声明不需要使德比工作。