こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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\以下

等に変更してみても変化はありません。


何が問題なのか、ご教授いただければと思います。
よろしくお願いします。

投稿日時 - 2008-08-27 12:12:29

QNo.4282283

すぐに回答ほしいです

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

> 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 ジェイ!

そりゃ見つかりません。
プロポーショナルフォントだとパッと見じゃ気がつきませんな……。

投稿日時 - 2008-08-27 14:51:35

補足

>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の前にファイル内で設定しているユーザ名が表示されないのが気になります。

投稿日時 - 2008-08-27 15:44:10

お礼

先のエラーは無事に解決しました!!

http://oshiete1.goo.ne.jp/qa1544247.html

こちらの質問のソースを参考にしてみたところ、無事に実行されました。
これから、要所要所をエラーになっていたソースと比較していきたいと思います。

丁寧かつ分かりやすく質問に答えていただき、感謝しています。
ありがとうございました。

投稿日時 - 2008-08-27 16:36:35

ANo.4

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

参考までに、
MySQLのJDBC Driverのクラス名は
com.mysql.jdbc.Driver
です。

org.gjt.mm.mysql.Driver
というのは、昔、使われていたもので、
以前に作られたプログラムのために、今も残っているだけです。

新規に作るのであれば、
com.mysql.jdbc.Driver
を指定すべきでしょう。

投稿日時 - 2008-08-27 15:16:47

お礼

>yuji 様

ご回答ありがとうございます。

http://oshiete1.goo.ne.jp/qa1544247.html

上記の質問のソースを参考にしましたら、yuji様から頂いた回答と同じように書いてありました。
今回はこちらのソースで無事に実行に至りましたが、これからエラーのあったソースと見比べてみたいと思います。

ご丁寧に回答くださり、ありがとうございました。

投稿日時 - 2008-08-27 16:38:43

ANo.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 関連の処理だけをするプログラム(簡単なサンプルなど)であれば要りません。

投稿日時 - 2008-08-27 14:24:13

補足

ご回答ありがとうございます、とても助かります!!

>環境変数の設定が違っているような気がします。
と言うのはもしかして前半の

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

上記のように、環境変数で指定したものが問題なく得られました。


>こういう場合は引用符で囲ってください。
なるほど、スペースで区切られてしまうことでまた違ったように理解されてしまうのですね;;
引用符で囲ってみたところ、エラーは最初と同じように戻ってしまいました。

投稿日時 - 2008-08-27 14:27:28

ANo.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\以下
ここに置いたものはのちに不毛なトラブルの原因になる
可能性があるので消しておいたほうがいいと思います。

投稿日時 - 2008-08-27 13:39:49

補足

またのご回答、ありがとうございます。

>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に必要性についてはどうなのでしょうか?

投稿日時 - 2008-08-27 13:56:48

ANo.1

起動時に与えているコマンドとオプションがあると
わかりやすかったのですが、
おそらくクラスパスを与えていないのではと思います。

C:\>java sample

とかやっていませんか。
C:\mysql\lib に JDBC ドライバの jar ファイルがあるのであれば

C:\>java -classpath .;C:\mysql\lib sample

とやればいけるかと思いますがどうでしょう。

投稿日時 - 2008-08-27 12:53:44

補足

THX1138様

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

投稿日時 - 2008-08-27 13:00:34