• ベストアンサー

JDBCのエラー

・jdk-1.5.0.16 ・mysql-4.0.26-win32 ・mysql-connector-java-3.1.14 をダウンロード、インストールして現在、Javaの勉強をしているものです。 JDBCについてなのですが、下記の通りにダウンロード、インストールを行いました。 1.mysql-connector-java-3.1.14.zipファイルをDLフォルダにDL 2.デスクトップに解凍 3.C直下にフォルダごと移動 4.C:直下に移動したmysql-connector-java-3.1.14フォルダのmysql-connector-java-3.1.14-bin.jarをCLASSPATHに追加 ファイルをコマンドプロンプトでコンパイルすると通るのですが、実行すると下記のエラーになります。 java.lang.ClassNotFoundException: org.git.mm.mysql.Driver at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at jdbctest.main(jdbctest.java:6) 過去の質問などを見て環境変数の設定も行ったのですが、どうしてもうまくいきません。 google検索でmysql-connector-java-3.1.14-bin.jarファイルの置き場所を、 C:\mysql\lib\以下 C:\Program Files\Java\jdk1.5.0_16\lib\以下 C:\Program Files\Java\jre1.5.0_16\lib\ext\以下 等に変更してみても変化はありません。 何が問題なのか、ご教授いただければと思います。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • THX1138
  • ベストアンサー率51% (108/208)
回答No.4

> C:\Program Files\Java\jdk1.5.0_16\lib\tools.jar > の部分でしょうか? あってもかまいませんが、 少なくとも今回のサンプルにはいらないと思われます。 とまあ、書いてはみましたが、真の原因とは全く関係なかったりします。 > java.lang.ClassNotFoundException: org.git.mm.mysql.Driver 原因はココです。 ------------------------------------------------------------- C:\>jar tf mysql-connector-java-5.1.6-bin.jar | grep Driver META-INF/services/java.sql.Driver com/mysql/jdbc/Driver.class com/mysql/jdbc/NonRegisteringDriver.class com/mysql/jdbc/NonRegisteringReplicationDriver.class com/mysql/jdbc/ReplicationDriver.class org/gjt/mm/mysql/Driver.class ------------------------------------------------------------- org/gjt/mm/mysql/Driver.class j J ジェイ! そりゃ見つかりません。 プロポーショナルフォントだとパッと見じゃ気がつきませんな……。

kreuz_z
質問者

お礼

先のエラーは無事に解決しました!! http://oshiete1.goo.ne.jp/qa1544247.html こちらの質問のソースを参考にしてみたところ、無事に実行されました。 これから、要所要所をエラーになっていたソースと比較していきたいと思います。 丁寧かつ分かりやすく質問に答えていただき、感謝しています。 ありがとうございました。

kreuz_z
質問者

補足

>org/gjt/mm/mysql/Driver.class >j J ジェイ! i ではなく j だったとは!! …確かに、よくよく見てみるとjでしたね…大変お騒がせしました;; org/git/mm/mysql/Driver.class      ↓ org/gjt/mm/mysql/Driver.class 変更してみたところ、確かにこれまで出ていたエラーは表示されなくなりましたが…。 java.sql.SQLException: Access denied for user: '@localhost' to database 'sampledb' 今度は上記のエラーが。 おそらく許可がされていない為にアクセス拒否されているんだろうとは思うのですが、 localhostの前にファイル内で設定しているユーザ名が表示されないのが気になります。

その他の回答 (4)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.5

参考までに、 MySQLのJDBC Driverのクラス名は com.mysql.jdbc.Driver です。 org.gjt.mm.mysql.Driver というのは、昔、使われていたもので、 以前に作られたプログラムのために、今も残っているだけです。 新規に作るのであれば、 com.mysql.jdbc.Driver を指定すべきでしょう。

kreuz_z
質問者

お礼

>yuji 様 ご回答ありがとうございます。 http://oshiete1.goo.ne.jp/qa1544247.html 上記の質問のソースを参考にしましたら、yuji様から頂いた回答と同じように書いてありました。 今回はこちらのソースで無事に実行に至りましたが、これからエラーのあったソースと見比べてみたいと思います。 ご丁寧に回答くださり、ありがとうございました。

  • THX1138
  • ベストアンサー率51% (108/208)
回答No.3

> ここのclasspathは環境変数で指定しているものと同じでなくてはと思い至りましたので、 環境変数で設定してたんですか。 であればオプション -classpath は要りません。 どちらかを指定すれば可です。 環境変数の設定が違っているような気がします。 C:\>echo %CLASSPATH% としたときに期待する値が表示されますか? > エラーが下記の通りに変わりました。 これはまた別な原因で、指定した classpath に スペースが入っていてそこで区切られてしまったためです。 java  -classpath .;C:\Program  Files\Java\jdk1.5.0_16\lib... と解釈され、 Files\Java\jdk1.5.0_16\lib... という起動用クラスを探しにいった結果です。 こういう場合は引用符で囲ってください。 java -classpath ".;C:\Program Files\Java\jdk1.5.0_16\lib..." sample > 本来なら使用するべきなのでしょうか? > また、eclipseで実行する場合のtomcatに必要性についてはどうなのでしょうか? JDBC 関連の処理だけをするプログラム(簡単なサンプルなど)であれば要りません。

kreuz_z
質問者

補足

ご回答ありがとうございます、とても助かります!! >環境変数の設定が違っているような気がします。 と言うのはもしかして前半の C:\Program Files\Java\jdk1.5.0_16\lib\tools.jar の部分でしょうか? >C:\>echo %CLASSPATH% >としたときに期待する値が表示されますか? C:\java>echo %CLASSPATH% .;C:\Program Files\Java\jdk1.5.0_16\lib\tools.jar;C:\mysql-connector-java-3.1.14 \mysql-connector-java-3.1.14-bin.jar 上記のように、環境変数で指定したものが問題なく得られました。 >こういう場合は引用符で囲ってください。 なるほど、スペースで区切られてしまうことでまた違ったように理解されてしまうのですね;; 引用符で囲ってみたところ、エラーは最初と同じように戻ってしまいました。

  • THX1138
  • ベストアンサー率51% (108/208)
回答No.2

> 結果は変わりませんでした。 すみません。不足がありました……。 Jar ファイルの名前まで書かないとダメですね。 C:\>java -classpath .;C:\mysql\lib\mysql-connector-java-3.1.14-bin.jar sample それから、 C:\Program Files\Java\jdk1.5.0_16\lib\以下 C:\Program Files\Java\jre1.5.0_16\lib\ext\以下 ここに置いたものはのちに不毛なトラブルの原因になる 可能性があるので消しておいたほうがいいと思います。

kreuz_z
質問者

補足

またのご回答、ありがとうございます。 >Jar ファイルの名前まで書かないとダメですね。 >C:\>java -classpath .;C:\mysql\lib\mysql-connector-java-3.1.14-bin.jar sample 試してみましたが、こちらでも結果は変わりませんでした。 ここのclasspathは環境変数で指定しているものと同じでなくてはと思い至りましたので、 .;C:\Program Files\Java\jdk1.5.0_16\lib\tools.jar;C:\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar sample と試してみたところ、エラーが下記の通りに変わりました。 Exception in thread "main" java.lang.NoClassDefFoundError: Files\Java\jdk1/5/0_1 6\lib\tools/jar;C:\mysql-connector-java-3/1/14\mysql-connector-java-3/1/14-bin/j ar いくつかお尋ねしても良いでしょうか? 今現在はコマンドプロンプトで実行しているためにtomcatは使用していないのですが、本来なら使用するべきなのでしょうか? また、eclipseで実行する場合のtomcatに必要性についてはどうなのでしょうか?

  • THX1138
  • ベストアンサー率51% (108/208)
回答No.1

起動時に与えているコマンドとオプションがあると わかりやすかったのですが、 おそらくクラスパスを与えていないのではと思います。 C:\>java sample とかやっていませんか。 C:\mysql\lib に JDBC ドライバの jar ファイルがあるのであれば C:\>java -classpath .;C:\mysql\lib sample とやればいけるかと思いますがどうでしょう。

kreuz_z
質問者

補足

THX1138様 ご回答ありがとうございます。 頂いたアドバイスのように実行を試みてみましたが、結果は変わりませんでした。 よろしくお願い致します。

関連するQ&A

専門家に質問してみよう