久しぶりにJDBCドライバを使ってOracleへのアクセスをしたのですが、実行可能JARファイルを作成する際に苦労したのでこの記事書くこととしました。Eclipseからは正常にJDBCでアクセスできるのに、実行可能JARファイルからの実行ではJDBCドライバが見つからないエラーがでてしまいます。(No suitable driver found for jdbc:oracle:thin:@192.168.3.13:1521:ORAU8)
原因は、Eclipseでのビルド・パスにJDBCドライバを含めていない事でした。
以下図は何れも左側の状態でないと実行可能JARファイルを作成した際うまく動作しません。


何れも上記左の状態で、ファイル→エクスポート→実行可能JARファイルと進み以下画面をだしたら、「生成されるJARの隣のサブフォルダーに必須ライブラリーをコピー」を選択

これで、JARファイルを作成したフォルダにjdbcドライバが格納されたフォルダが作成されます。作成されたJARファイル内のマニフェストファイル(MANIFEST.MF)を確認すると以下の通りjdbcドライバへのクラスパスが通っています。(java -jar でJARファイルの実行をする際はクラスパスの指定(-cp 、-CLASSPATHオプション)が使えないのでこのようにマニフェストファイルが用意されています)
Manifest-Version: 1.0
Main-Class: insertSelect.Main
Class-Path: . InsertSelect_lib/ojdbc8.jar