2017-03-23 28 views
4

Java 9モジュールを組み込みDerbyデータベース(埋め込みモード)に接続しようとしています。私のモジュールはjava.sqlに依存していますが、Derbyドライバをどこに置くかわかりません。ここでDerbyドライバがJava 9モジュールに見つかりません

module mymodule { 
    requires java.sql; 
} 

実行に失敗したモジュールでMain.javaコードです:

は、ここに私のmodule-info.javaをだ

public static void main(String[] args) { 

... 
    Connection conn; 
    try { 
     conn = DriverManager.getConnection("jdbc:derby:mysampledb"); 
     Statement s = conn.createStatement(); 
     s.executeUpdate("create table testtable (" + 
      "id VARCHAR(256), " + 
      "value VARCHAR(256)) "); 
     s.close(); 

    } 
    catch (SQLException e) { 
     System.out.println("Error connecting " + e); 
    } 
} 

これは罰金コンパイルが、実行されません。

java -cp derbyjars --module-path out -m mymodule/foo.Main 

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

DBドライバを追加するにはどうすればよいですか?それは-cpオプションを使用していますか?すべてのダービージャーをフォルダderbyjarsに入れました。それを-cpオプションに渡しています。モジュールを作る別の方法がありますを参照してくださいドライバ?

+2

が、ここで役立つかもしれない何か: 'java.sql'モジュール突き止め' [services](http://openjdk.java.net/projects/jigsaw/spec/sotms/#services)( 'java --list-modules java.sql'を実行して確認してください)を使用してjava.sql.Driverを実装します。 derbyjarがモジュールであった場合、それは 'Driver'実装を提供し、SQLモジュールがそれを受け取ると宣言します。私はモジュールなしでそれを達成する方法を知りません。独自のモジュール記述子を手作りし、JARにパッチを当てる必要があります。 – Nicolai

+2

'derbyjars'はあなたの質問の省略形ですか?あるいは、例えば、 'derbyrun.jar'への完全修飾パス名ですか?あなたの質問にできるほど精密で正確であることが最善です。詳細は重要です。私が知る限り、 '-cp'引数に** folder **を指定しても、そのフォルダ内のすべてのjarが' CLASSPATH'に追加されるわけではありません。 jarファイル名を明示的に指定する必要があります。個々の '.class'ファイルだけがフォルダの下からピックアップされます。 –

+1

@BryanPendletonありがとうございました!あなたは何が欠けているのかを強調しました。私は '-cp'パラメータをフォルダに指定していました。個々のjarファイルで置き換える必要がありました。あなたの質問に答えて、はい、私が言及したように、 'derbyjars'は私がジャーを置いたフォルダの名前です。 – halfinfinities

答えて

3

-cpパラメータには、個々のjar名が入ります。 jarを含むフォルダの名前ではありません。 (ありがとう@ブライアンペンドルトン)。

私は、以下のいずれかに私のコマンドを変更し、それが働いた:私は、その特定の問題を解決する方法がわからない

java -cp "derbyjars/*" --module-path out -m mymodule/foo.Main 
関連する問題