プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。

・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の置いてあげる場所が悪いのだろうと思い、過去ログなどで調べていても解決に結びつきませんでした・・・。

どこがわるいのでしょうか??

どなたかご教授のほどよろしくお願いします。

A 回答 (7件)

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様 ご回答ありがとうございます。

>どこに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
            ・
            ・
            ・
となってしまいました(泣
調べていても前に進むことができません・・・
何か対策があれば教えてください。

補足日時:2005/08/12 10:52
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/15 11:42

置き場所の前に、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
を追加し、再起動後に実行してみたのですが同じエラーが発生しました。

どこか悪いところをお気づきであればご指摘願います。

補足日時:2005/08/12 10:44
    • good
    • 0

環境変数のCLASSPATHに .jarまでの


絶対パスを追加してみては。

あと,『mysql jdbc』で検索してみると
一杯引っかかりますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/15 11:39

webアプリじゃなくて、ただのjavaアプリで接続はできますか?


まずはそこからだと思いますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/15 11:37

>該当するクラスとはどのようなクラスなのでしょうか??


私の書き方が悪かったですね。
簡単に言えば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を再インストールしてみてはいかがでしょう?
    • good
    • 0
この回答へのお礼

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

Bonjin様のお力添えに感謝いたします。
本当にどうもありがとうございました。

お礼日時:2005/08/15 11:33

問題解決のために恥を忍んでサンプル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>
    • good
    • 0

失礼しました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
    • good
    • 0
この回答へのお礼

fortranxp様 返信が送れて申し訳ありません。
ご回答どうもありがとうございました。
おかげさまで動くようになりました。

サンプルコードまで教えていただき、感謝しております。
本当にありがとうございました。

お礼日時:2005/08/15 11:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!