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
オプションに渡しています。モジュールを作る別の方法がありますを参照してくださいドライバ?
が、ここで役立つかもしれない何か: '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
'derbyjars'はあなたの質問の省略形ですか?あるいは、例えば、 'derbyrun.jar'への完全修飾パス名ですか?あなたの質問にできるほど精密で正確であることが最善です。詳細は重要です。私が知る限り、 '-cp'引数に** folder **を指定しても、そのフォルダ内のすべてのjarが' CLASSPATH'に追加されるわけではありません。 jarファイル名を明示的に指定する必要があります。個々の '.class'ファイルだけがフォルダの下からピックアップされます。 –
@BryanPendletonありがとうございました!あなたは何が欠けているのかを強調しました。私は '-cp'パラメータをフォルダに指定していました。個々のjarファイルで置き換える必要がありました。あなたの質問に答えて、はい、私が言及したように、 'derbyjars'は私がジャーを置いたフォルダの名前です。 – halfinfinities