2017-08-01 14 views
0

Java DBのドキュメントには、JDKにバンドルされていると書かれていますが、それ以降のJavaバージョン(私はJava 8を持っています)では特別なクラスの読み込みは不要です。しかし、それは完全に失敗に接続しようとして:Java DBへの接続は常に失敗します

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

これは(接続が失敗した)SQL状態が08001であることと、SQLExceptionがスローされます。

私も明示的にドライバクラスをロードしようとしたが、それはまた、エラーがスローさ:ダービークラスが見つからないため、以下の

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

コードはコンパイルさえできません。

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

行う方法私はJava DBを使ってデータベースに接続していますか?

+1

これはかなり明白です。プロジェクトにjarファイルを追加してください –

+1

特定のJDKバージョンと特定のJavaベンダーでは、ランタイムクラスパスに自動的にしか存在しませんでした。そして**コンパイル**クラスパスには決してなかった、あなたは常にそれを明示的にそこに追加しなければならない。 –

答えて

0

「組み込みの」Java DBを使用するには、derby jarをクラスパスに手動で追加する必要があります。これは私がGradleの中でそれをやった方法です:

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

それは名前とバージョン番号によって解決されている通常の依存関係とは対照的に、あなたは、ローカルディレクトリ構造に依存していることを意味するので、私はこれを嫌います。

「Java DB」が標準ライブラリに完全に統合されると期待していましたが、そうではありません。これは、すべてのJDKインストールで簡単に配置されます。これは、一般的に古くなったダービーのリリースであることの追加的な欠点を持っているように、私は、Java DBを無視してMavenの中央から最新ダービーのバージョンを使用します:以前に必要なClass.forName(...)文はまだClassNotFoundExceptionをスローすることも

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

注意を。この声明はダービー作業をする必要はありません。

関連する問題