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