背景
EclipseにてJavaからMySQLに接続しようと実行した際に、エラーが出ました。
かなり沼った印象を受けましたので、対処法を残しておきます。
エラーメッセージ
遭遇したエラーメッセージは2つ。
1 2 |
java.lang.ClassNotFoundException java.sql.SQLException |
まずはエラーメッセージの意味を確認します。
1 |
java.lang.ClassNotFoundException |
こちらのエラーは、Class.forName()メソッドが正しく動作していないときに発生するものです。
Class.forName()メソッドはバイトコードのJDBCをメモリ上にオブジェクトとして生成するためのものです。
1 |
java.sql.SQLException |
こちらのエラーは、基本的には正しいSQL文が記述されていない、もしくはその生成方法に問題がある場合に発生するものです。しかし今回のケースでいうと、そもそもDB接続ができていない状態なので、その巻き込み事故の被害として出てきているものだと推測できます。
原因
エラーの根源は「JDBCドライバが正しくロードされていない」ことにあります。
簡単に言うと、DB接続の準備に誤りがあるということです。
以下考えられる原因です。
- JDBCのjarファイルのパスが通っていない
- JDBCの相対パスに誤りがある
- 接続先のデータベースの指定に誤りがある
対処法
多くの場合だとjarファイルのパスが正しく通っていないことが原因です。
Eclipseであれば、[ウィンドウ]→[設定]→[Java]→[インストール済みのJRE]に移り、connecterJファイルのmysql-connecter-java-**.jarというファイルを選択すれば完了できます。
基本的にはこれでエラー解消できます
ただ、このパスを通してもエラーメッセージが表示される場合は、MySQL、ConnecterJいずれかのバージョンが古かったり、対応していなかったりしてjarファイルが有効に動作していないことが考えられます。
自分もこのjarファイルを通したのに作動しないことに沼りました。
対処法としては、まず入れてあるConnecterJファイルをアンンストールしましょう。
そこからまたMySQLのインストーラーに移り、ConnecterJの最新バージョンをインストールします。
その新規ファイルの中にあるjarファイルをパスとして通しなおして下し。
おそらく改善されるだろうと思います。
これでも改善されない場合は、JDBCの相対パスに誤りがあるか接続先のデータベースの指定に誤りがあるの可能性があります。
自分のバージョンやDBを再度確認しましょう。
コメントを残す