• ベストアンサー

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

  • クラスにアクセスできません。

    いつもお世話になっております。 ・windows2000 ・j2sdk-1_4_1_07-windows-i586 ・jakarta-tomcat-4.1.31 で、 Daykeisan.java というのを作成し、コンパイル後 作成されたclassファイルを c:\Plogram Files\Apache Group\Tomcat4.1\webapps\examples\WEB-INF\classes\javahello に格納しました。 <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page language="java" %> <%@ page import="java.util.*" %> <jsp:useBean id="syuu" class="javahello.Daykeisan" />           ・             ・           ・ とjspファイルを作成し、表示させようとすると、 HTTP Status 500 - C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\examples\javahello\calendar2_jsp.java:45: javahello.Daykeisan にアクセスできません。 クラスファイル C:\Program Files\Apache Group\Tomcat 4.1\webapps\examples\WEB-INF\classes\javahello\Daykeisan.class は不正です。 クラスファイル Daykeisan に不正なクラスがあります。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 javahello.Daykeisan syuu = null; ^ エラー 1 個 とエラーがかえってきます。 <jsp:useBean・・・> の使い方がよくないのだろうと思い調べていますが、解決に結びつきません。 どなたかご教授お願いいたします。

    • ベストアンサー
    • Java
  • インポート場所の指定について

    使用言語はJSPです。 JavaMailをわけあって /usr/local/tomcat/webapps/mi/WEB-INF/lib ここにインストールしています。 このような感じでインポート (<%@ page contentType="text/html; charset=Windows-31J" import="java.util.*, javax.mail.*, javax.mail.internet.*" %>) したいのですが、インポート場所の指定等はできないのでしょうか? JavaMailのインストール場所はわけあって変更できない状況です。

  • java.lang.ClassNotFound

    eclipseを使ってデータベースの検索を行いたいのですが、実行すると java.lang.ClassNotFoundException: com.mysql.jdbc.Driver とエラーが出ます。ビルド・パスのライブラリーには下記のものが入っているのですが あとは何が足りていないのでしょうか? jstl.jar standard.jar TOMCAT_HOME/common/lib/jasper-runtime.jar TOMCAT_HOME/common/lib/jsp-api.jar TOMCAT_HOME/common/lib/servlet-api.jar jdk1.5.0_22

    • ベストアンサー
    • MySQL
  • JAVAのパッケージについて

    CentOSで、WEBページからデータベースにアクセスするためのプログラムをつくっているのですが、サーブレットがコンパイルエラーになります。 サーブレットで、mypackageが解決できないとのことです。 # javac -classpath /opt/tomcat6/apache-tomcat-6.0.20/lib/servlet-api.jar Controller10.java ---------- 1. ERROR in Controller10.java (at line 10) import mypackage.Model10; ^^^^^^^^^ The import mypackage cannot be resolved ---------- mypackageはデータベースにアクセスするJavaBeanであるModel10をいれているフォルダです。Model10.javaはコンパイルできました。 Controller10.java というのは、Model10.classにアクセスするためのサーブレットです。 Controller10.javaと同じ階層に、mypackageのフォルダをつくり、その下に、Model10.classというJavaBeanをいれていて、なぜ解決できないのか、どうしてもわかりません。 ファイル構造は下記の通りです。 webapps  |___mysamples      |_test.jsp      |_HTML      |_WEB-INF        |_class               |_Controller10.java          |_mypackage ←フォルダ             |_Model10.class ←JavaBean Controller10.javaの抜粋です ------------------------------ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.RequestDispatcher; import java.io.PrintWriter; import mypackage.Model10; ←Controller10にimport文をいれてます。 ------------------------------ Model10.javaの抜粋です ------------------------------ package mypackage;  ←Model10にpackage文をいれてます。 import java.sql.DriverManager; import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; ------------------------------- JARやWARファイルをつくらなければ、パッケージしたことに ならないのでしょうか・・・。 すみませんが、解決方法を教えてください。

    • ベストアンサー
    • Java
  • サーブレットが実行できない

    似たような質問が何件かあるのですがそちらを読んでも解決できないので、質問させてください。 java servlet初心者なのですが、 http://www.hellohiro.com/servlet.htm のサイトをもとにサーブレット環境を自分のパソコンで作ろうとしています。 とりあえず ・Tomcat5.5.23をダウンロード ・http://localhost:8080でページが表示されることを確認 ・HelloWorldServlet.classを作る。 まで正常にできました。 その後、 [Tomcatのフォルダ]\webapps\examples\WEB-INF\classes にHelloWorldServlet.classをコピーし、 http://localhost:8080/examples/servlet/HelloWorldServlet  を実行したところ 404エラーが発生しました。 もともとwebappsファイル下にexamplesというファイルがなかったのですが、これは正常なのでしょうか? jsp-examplesファイルとservlets-examplesファイルがあったのでその中の \WEB-INF\classes下にHelloWorldServlet.classを入れてみたり、 webapps下に\examples\WEB-INF\classesを作って、その中にそのclassファイルを入れてみたりといろいろやってみたのですが、 まったくエラーは変わりません。 何が悪いのかわからないのですが、 何かアドバイスをいただけないでしょうか? お願いします。

    • ベストアンサー
    • Java
  • Java

    Win98上で動作するJava Servletのバージョンは何ですか? Win98でECLIPSE Tomcat MYSQLを使用しJAVAを学びたい と考えています。 どのような環境が一番いいのか教えてください。 JAVAに詳しい方お願いします。 よろしくお願いします。

  • java.lang.ClassNotFoundException: com.mysql.jdbc.Driverと出てしまいます。

    ご質問させてください。 まずは環境は、 ・Windows Vista Home Premium ・j2sdk1.4.2_16 ・mysql-connector-java-5.1.5 ・Mysql 5.0 ・Tomcat 5.5 ・eclipse-SDK-3.1.2-win32 となっております。 次に、環境変数を http://www.hellohiro.com/jdbcmysql.htm http://www.hellohiro.com/appli.htm を参考に、 CLASSPASS:.;%JAVA_HOME%\lib\tools.jar; C:\mysql\mysql-connector-java-5.1.5\mysql-connector-java-5.1.5-bin.jar; C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar; C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\mysql-connector-java-5.1.5-bin.jar;. JAVA_HOME:C:\j2sdk1.4.2_16 PATH:%JAVA_HOME%\bin と設定しました。 そして以下のプログラムを実行すると import java.sql.*; public class test { public static void main(String args[]) { try{ //接続の準備 String drv = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql:///cardb"; String usr = "root"; String pw = "Gob3=104"; //データベースへの接続 Class.forName(drv); Connection cn = DriverManager.getConnection(url, usr, pw); //問い合わせの準備 Statement st = cn.createStatement(); String qry = "SELECT * FROM car_table"; //問い合わせ ResultSet rs = st.executeQuery(qry); //データの取得 ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); while(rs.next()){ for(int i=1; i<=cnum; i++){ System.out.print(rm.getColumnName(i) + ":"+ rs.getObject(i) + " "); } System.out.println(""); } //接続のクローズ rs.close(); st.close(); cn.close(); } catch(Exception e){ e.printStackTrace(); } } } エラーが、 java.lang.ClassNotFoundException: com.mysql.jdbc.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 test.main(test.java:15) とでてしまいます。 EclipsでMySQLを用いて、データベースにアクセスするにはどうしたらよいのでしょうか。 お知恵をお貸しください。

    • ベストアンサー
    • Java
  • JSP実行時のCLASSPATHはいつもと違う?

    Tomcat3.3&JDK1.3でJSPの勉強をしています。 JDBCでDB(MySQL)に接続するために、 Class.forName("org.gjt.mm.mysql.Driver"); でJDBCドライバをロードしようとすると、ClassNotFoundExceptionが発生します。 同じようなルーチンをJSPではなく、普通のJAVAアプリケーションとしてjavacでコンパイルしてjavaで実行したときは、うまく動きます。 多分、JSP実行時のCLASSPATHにあたるものにJDBCドライバの場所を設定すればいいと思うのですが、どこを設定すればいいのかわかりません。 それとも、CLASSPATHの問題ではないのでしょうか。 ぜひご教授ください。よろしくお願いします。

    • ベストアンサー
    • Java
  • Java,Javaスクリプト、エクリプス、Tomcat,MySQLとは何ですか?

    Java,Javaスクリプト、Eclipse、Tomcat,MySQLとは何ですか? 誰かそれぞれ詳しく教えてください。 1.Javaとは何か? 2.JavaスクリプトとJavaの違いは? 3.Eclipseとは何か? 4.TomcatとJavaにはどのような関係があるんですか? 5.MySQLとSQLとは何か?

  • DBにかな情報が登録できません(JSP)

    <%@ page contentType="text/html; charset=SHIFT_JIS" import="java.sql.*,javax.naming.*,javax.sql.*,java.util.*" %> <%@ page import = "java.util.Date" %> <%@ page import = "java.text.DateFormat" %> <%@ page import = "java.text.SimpleDateFormat" %> <%@page import="java.text.NumberFormat" %> <% request.setCharacterEncoding("SHIFT_JIS"); %> <% Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/workshop"); Connection db=ds.getConnection(); String name = request.getParameter("Name"); String busyo = request.getParameter("Shozoku"); PreparedStatement prdStt3=db.prepareStatement("INSERT INTO Rireki (Name,Busyo) VALUES(?,?)"); prdStt3.setString(1,name); prdStt3.setString(2,busyo);; prdStt3.executeUpdate(); out.println("名前:" + name + "<BR>"); out.println("所属部署:" + busyo + "<BR>"); prdStt3.close(); db.close(); %> ========================== 【環境】 Webサーバ:Tomcat5.5,apache2.0.49 DB:MySQL4.1 JAVA:JDK1.5.0.7 ========================== 上記ソースでDBに情報を書き込もうとしましたが、うまくいきません。 半角英数字は登録できますが、かなは全角・半角ともに登録されていないようです。 パラメータに値そのものは入っているらしく、printlnで出力したところ、画面上で入力情報を確認出来ました。 どなたかお気づきの点がありましたら是非ともアドバイス下さい。 お願いいたします。

    • ベストアンサー
    • Java