- ベストアンサー
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の置いてあげる場所が悪いのだろうと思い、過去ログなどで調べていても解決に結びつきませんでした・・・。 どこがわるいのでしょうか?? どなたかご教授のほどよろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>該当するクラスとはどのようなクラスなのでしょうか?? 私の書き方が悪かったですね。 簡単に言えば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を再インストールしてみてはいかがでしょう?
その他の回答 (6)
- fortranxp
- ベストアンサー率26% (181/684)
失礼しました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>
お礼
fortranxp様 返信が送れて申し訳ありません。 ご回答どうもありがとうございました。 おかげさまで動くようになりました。 サンプルコードまで教えていただき、感謝しております。 本当にありがとうございました。
- fortranxp
- ベストアンサー率26% (181/684)
問題解決のために恥を忍んでサンプル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>
- pcbeginner
- ベストアンサー率46% (261/560)
webアプリじゃなくて、ただのjavaアプリで接続はできますか? まずはそこからだと思いますよ。
お礼
pcbeginner様 返信が送れて申し訳ありませんでした。 一つずつ、確実に組まなければならないことの大切さを教えていただきありがとうございました。 おかげさまで動くようになりました。 本当にどうもありがとうございました。
- naganaga_001
- ベストアンサー率71% (172/242)
環境変数のCLASSPATHに .jarまでの 絶対パスを追加してみては。 あと,『mysql jdbc』で検索してみると 一杯引っかかりますよ。
お礼
naganaga_001様 返信が送れて申し訳ありません。 アドバイスありがとうございました。 絶対パスを追加する という発想は思いつきませんでした。 今後に役立たせていただきます。 おかげさまで動くようになりました。 本当にありがとうございました。
- Bonjin
- ベストアンサー率43% (418/971)
置き場所の前に、MySQLのjarの中に該当するクラスがあるかまずは調べてみてはいかがでしょう? jarの中になければどこにおいても一緒です。 jarファイルの中にあれば置き場所の問題です。 jarファイルを%CATALINA_HOME%\libか %CATALINA_HOME%\lib\webapps\(MySQLを利用するコンテキスト)\WEB-INF\lib に配置してあげれば良さそうなんですが・・・
補足
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 を追加し、再起動後に実行してみたのですが同じエラーが発生しました。 どこか悪いところをお気づきであればご指摘願います。
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver ということは、MySQLのドライバ(Connector/J)が認識できていない、ということでは? ときどきやってしまいますが、Tomcatが実行時に使っているJRE/JDKが、よく調べてみるとConnectorをインストールしてあるJRE/JDKとは別のものだった、ということはあります。どこにConnectorをインストールしてあるか、確認してみてはどうでしょう。 よくわからなければ、インストールされているすべてのJRE/JDKのlib/ext/内に片っ端からConnectorのjarをコピーしてしまえば、どれかが必ず認識します(笑)。
お礼
Kyon2_PaPa様 おかげさまで動くようになりました。 jarファイルの役割をよく理解せずに利用していたので小さなミスを犯してしまいました。 ご指摘本当に感謝しています。 ありがとうございました。
補足
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 ・ ・ ・ となってしまいました(泣 調べていても前に進むことができません・・・ 何か対策があれば教えてください。
お礼
Bonjin様 返信が送れて申し訳ありません。 アドバイスありがとうございました。 再インストールをし、手順どおりに行ったところ望みどおりに動くようになりました。 Bonjin様のお力添えに感謝いたします。 本当にどうもありがとうございました。