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