-100p

-10p

+10p

+100p

SQLite3のJDBCのアップデート時のバグ対応

TomcatサーブレットとSQLiteとの連携でInternal Server Error。
SQLite3のJDBCのアップデート時のバグ対応。

関連ページ 参考URL
久しぶりにTomcatで新しいプロジェクトを作り始めたら、以前出来ていたSQLiteとの連携が出来なくなっていた。
自分のケースでは簡単に解決できたのでそのメモ。

JDBCとAPIのライブラリ

最近、心機一転ゼロベースからTomcatのプロジェクトを作り始めた。
Tomcatもそれと連携するSQLiteも全て最新バージョンで実装を開始。
SQLiteのJDBCはsqlite-jdbc-3.45.3.0.jarを使った。

TomcatサーブレットとSQLiteとの連携は比較的簡単、WEB-INF/libの下にJDBCを1個置いて、Javaからは下のコードを打ち込むだけのはずだった。
classpathの設定も特に必要なかったはず。
        Class.forName("org.sqlite.JDBC");
        var conn = DriverManager.getConnection(
 [データベースのpath] 
);

しかしTomcatを起動してみるとInternal Server Errorと出てくる。
HTTPステータス 500  Internal Server Error
タイプ 例外報告
メッセージ サーブレットの実行により例外を投げました
説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。

エラー発生個所を見ると
 Class.forName("org.sqlite.JDBC"); 
の所になっている。


おかしいなと思い、試しに以前作ったTomcatプロジェクトで動いていた古いJDBC、sqlite-jdbc-3.40.0.0.jarに入れ替えてみた。
すると正常に動く。

最初はJDBCのバグか、Tomcatが最新のJDBCに対応していないんだなと思ったが全然違った。
SQLiteのJDBCのTopをよく見るとUsageにデカデカとライブラリが2つ必要と書いてあった。

昔はsqlite-jdbc-3.40.0.0.jarの一個のライブラリで動いていたので、完全にその先入観があった。
説明はよく読みましょうという結論で終わり。
0
0

-100p

-10p

+10p

+100p