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

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"); 
の所になっていました。 サーブレットエラー文1
サーブレットエラー文2

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

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

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