• ベストアンサー

java.lang.ClassNotFoundException・・・

いつもお世話になっております。 ・j2sdk1.4.1_07 ・Tomcat 4.1 ・apache_2.0.54-win32-x86-no_ssl.msi ・mysql-4.0.25-win32 ・mysql-connector-java-3.1.10 をダンロードし、環境変数なども設定しました。 package javahello; import java.sql.*; import java.util.*; public class DBConnectionPool {           ・           ・           ・ をコンパイルし、 <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="java.sql.*,javahello.DBConnectionPool" %> <%! DBConnectionPool pool; %>          ・          ・          ・ と作成し、 Tomcatのフォルダ]\webapps\examples\WEB-INF\classes\javahelloの下に DBConnectionPool.class を入れていざ http://localhost:8080/examples/javahello/jspdb.jsp で表示させようとすると、 java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver とエラーが帰ってきてしまいます・・・。 DBConnectionPool.classの置いてあげる場所が悪いのだろうと思い、過去ログなどで調べていても解決に結びつきませんでした・・・。 どこがわるいのでしょうか?? どなたかご教授のほどよろしくお願いします。

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.5

>該当するクラスとはどのようなクラスなのでしょうか?? 私の書き方が悪かったですね。 簡単に言えばjarファイルの中にドライバクラス(今回はorg.gjt.mm.mysql.Driver)が含まれているか調べるという意味です。 jarコマンドでリストするなり展開するなりすればわかるかと思います。 私もConnector/Jを落としてみましたが、ちゃんと入っていたので問題ないと思います。 私はいつもcom.mysql.jdbc.Driverを使っているのでorg.gjt.mm.mysql.Driverがあるか気になっただけです。ちなみに後者のDriverは前者のDriverをextendsしてある(別名で扱えるだけ)だけなので、どちらを使っても同じです。 %CATALINA_HOME%\common\libに入れてダメってことですよね・・・ とりあえずTomcatを再インストールしてみてはいかがでしょう?

miammi
質問者

お礼

Bonjin様 返信が送れて申し訳ありません。 アドバイスありがとうございました。 再インストールをし、手順どおりに行ったところ望みどおりに動くようになりました。 Bonjin様のお力添えに感謝いたします。 本当にどうもありがとうございました。

その他の回答 (6)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.7

失礼しましたODBCの場合を誤って載せました。下記 に訂正します。 <HTML> <HEAD> </HEAD> <BODY> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@page import="java.sql.*" %> <CENTER> <% ResultSet rs = null; Class.forName("org.gjt.mm.mysql.Driver"); // MySQLの場合 Connection con = DriverManager.getConnection("jdbc:mysql:///mysql?useUnicode=true&characterEncoding=SJIS","root","123456"); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); // クエリーを実行して結果セットを取得 rs = stmt.executeQuery("SELECT * FROM test"); // 検索された行数分ループ while(rs.next()) { %> <BR> <%= rs.getString("a") %> <%= rs.getString("b") %> <BR> <% } stmt.close(); con.close(); %> </CENTER> </BODY> </HTML>

参考URL:
http://www.hellohiro.com/jspdb.htm
miammi
質問者

お礼

fortranxp様 返信が送れて申し訳ありません。 ご回答どうもありがとうございました。 おかげさまで動くようになりました。 サンプルコードまで教えていただき、感謝しております。 本当にありがとうございました。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.6

問題解決のために恥を忍んでサンプルJSPを載せます。 SQL文やrs.getString()文は適宜変更してください。 実行できますか? <HTML> <HEAD> </HEAD> <BODY> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@page import="java.sql.*" %> <CENTER> <% ResultSet rs = null; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con =DriverManager.getConnection("jdbc:odbc:MySQL"); Statement stmt = con.createStatement(); // 実行して結果セットを取得する rs = stmt.executeQuery("SELECT * FROM test ORDER BY a"); // 結果セットの分だけループして表示する while (rs.next()) { %> <BR> <%= rs.getString("a") %> <%= rs.getString("b") %> <BR> <% } con.close(); %> </CENTER> </BODY> </HTML>

回答No.4

webアプリじゃなくて、ただのjavaアプリで接続はできますか? まずはそこからだと思いますよ。

miammi
質問者

お礼

pcbeginner様 返信が送れて申し訳ありませんでした。 一つずつ、確実に組まなければならないことの大切さを教えていただきありがとうございました。 おかげさまで動くようになりました。 本当にどうもありがとうございました。

回答No.3

環境変数のCLASSPATHに .jarまでの 絶対パスを追加してみては。 あと,『mysql jdbc』で検索してみると 一杯引っかかりますよ。

miammi
質問者

お礼

naganaga_001様 返信が送れて申し訳ありません。 アドバイスありがとうございました。 絶対パスを追加する という発想は思いつきませんでした。 今後に役立たせていただきます。 おかげさまで動くようになりました。 本当にありがとうございました。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

置き場所の前に、MySQLのjarの中に該当するクラスがあるかまずは調べてみてはいかがでしょう? jarの中になければどこにおいても一緒です。 jarファイルの中にあれば置き場所の問題です。 jarファイルを%CATALINA_HOME%\libか %CATALINA_HOME%\lib\webapps\(MySQLを利用するコンテキスト)\WEB-INF\lib に配置してあげれば良さそうなんですが・・・

miammi
質問者

補足

Bonjin様 ご回答ありがとうございます。 >置き場所の前に、MySQLのjarの中に該当するクラスがあるかまずは調べてみてはいかがでしょう? の該当するクラスとはどのようなクラスなのでしょうか?? 初歩的なことばかり聞いて申し訳ありませんが、教えてください。 >jarファイルを%CATALINA_HOME%\libか %CATALINA_HOME%\lib\webapps\(MySQLを利用するコンテキスト)\WEB-INF\lib に配置してあげれば良さそうなんですが・・・ でを拝見し、環境変数を 変数:CATALINA_HOME 値 :C:\Program Files\Apache Group\Tomcat 4.1 とし、 C:\Program Files\Apache Group\Tomcat 4.1\common\lib の中に mysql-connector-java-3.1.10-bin.jar を追加し、再起動後に実行してみたのですが同じエラーが発生しました。 どこか悪いところをお気づきであればご指摘願います。

noname#49664
noname#49664
回答No.1

java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver ということは、MySQLのドライバ(Connector/J)が認識できていない、ということでは?  ときどきやってしまいますが、Tomcatが実行時に使っているJRE/JDKが、よく調べてみるとConnectorをインストールしてあるJRE/JDKとは別のものだった、ということはあります。どこにConnectorをインストールしてあるか、確認してみてはどうでしょう。  よくわからなければ、インストールされているすべてのJRE/JDKのlib/ext/内に片っ端からConnectorのjarをコピーしてしまえば、どれかが必ず認識します(笑)。

miammi
質問者

お礼

Kyon2_PaPa様  おかげさまで動くようになりました。 jarファイルの役割をよく理解せずに利用していたので小さなミスを犯してしまいました。 ご指摘本当に感謝しています。 ありがとうございました。

miammi
質問者

補足

Kyon2_PaPa様 ご回答ありがとうございます。 >どこにConnectorをインストールしてあるか、確認してみてはどうでしょう。 ということでConnectorはC:\javahello\mysql-connector-java-3.1.10 の中に mysql-connector-java-3.1.10-bin.jar があるのですがこのことでよろしいのでしょうか? また、 >インストールされているすべてのJRE/JDKのlib/ext/内に片っ端からConnectorのjarをコピーしてしまえば・・・ ということでしたので、 C:\j2sdk1.4.1_07\jre\lib\ext へ mysql-connector-java-3.1.10-bin.jar をコピーしたところ com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: java.net.ConnectException: Connection refused: connect STACKTRACE: java.net.SocketException: java.net.ConnectException: Connection             ・             ・             ・ となってしまいました(泣 調べていても前に進むことができません・・・ 何か対策があれば教えてください。

関連するQ&A