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の問題ではないのでしょうか。

ぜひご教授ください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

OS は何でしょうか?



JSP の実行時の CLASSPATH は、tomcat を起動するときの環境が引き継がれる
ので、

・tomcat.bat / tomcat.sh をいじる
・unix 環境であれば、$(HOME)/.tomcatrc に CLASSPATH を追加する記述を書く
・もっと安直に JDBC ドライバが入っている jar を WEB-INF/classes/ に置く

ってなところを思いつきます。
    • good
    • 0
この回答へのお礼

すいません、OS書き忘れてました。Windows2000です。

お答えの通りやってみたら、うまくいきました。
tomcat.bat をいじって解決しました。
ありがとうございました。

さらに、今、サービスとしてTomcatを動かしているので、この話を参考に探したところ、%TOMCAT_HOME%\conf\wrapper.propertiesに、これに相当する設定があり、そこを書き換えてうまくいきました。

ありがとうございました。

お礼日時:2001/08/24 15:27

Java Applicatoin ServerのCLASSPATHにorg.gjt.mm.mysql.Driverが追加されているかどうかを確認してください。

    • good
    • 0
この回答へのお礼

ありがとうございます。
やはり、TomcatにもCLASSPATHというのがあるんですね。

今回の場合はWindowsNTのサービスとしてTomcatを使ってますので、%TOMCAT_HOME%\conf\wrapper.propertiesの中にその設定項目がありました。

ありがとうございました。

お礼日時:2001/08/24 15:23

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjava.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を用いて、データベースにアクセスするにはどうしたらよいのでしょうか。
お知恵をお貸しください。

ご質問させてください。
まずは環境は、

・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\comm...続きを読む

Aベストアンサー

エラーの内容を拝見する限り、mysql-connector-java-5.1.5を認識していないように見受けられます。
Eclipseのビルドパスのライブラリへの取り込みは正しくおこなわれていれば、デバッグの際のエラーは出なくなると思いますのでご確認ください。

QJDBC + JAVA Servlet、JSP、でMysqlのレコード更新、レコード参照について

 標記につき勉強中ですが素人です。何とか道筋を教えて下さい。宜しくオ願いします。
 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_05.htmを懸命に見ています。
以下 
■MySQL JDBC + JAVA Servlet、JSP レコード更新

・レコード追加で、日本語データが指定できるかテストする。
問題なく追加できる。

<%@ page import="java.util.*,java.sql.*;" contentType="text/html; charset=Shift_JIS"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>JAVA Server Page(JSP) - MySQL JDBC Test</TITLE>
</HEAD>
<BODY>
<P>JAVA Server Page(JSP) - MySQL JDBC Test</P>
<%
String drv = "com.mysql.jdbc.Driver";
String dsn = "jdbc:MySQL://localhost:3306/sak?user=sak&password=";
Connection cn = null;
Statement st = null;
ResultSet rs = null;

// MySQL JDBC ドライバロード
以下

ここで説明しているのは上記をJSPで記述すれば動作するということなのでしょうか、お教え下さい。
前提条件が良く分からないのです。或いは何が分からないのか良く分からないレベルです。
多分上記をaaa.JSPに作ればコンパイルされるので動くということかなと考えています。
コンテキスト、Web.Xml、Jap、Java、ViewBeanの関係が分かりません何とか御願致します。

 標記につき勉強中ですが素人です。何とか道筋を教えて下さい。宜しくオ願いします。
 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_05.htmを懸命に見ています。
以下 
■MySQL JDBC + JAVA Servlet、JSP レコード更新

・レコード追加で、日本語データが指定できるかテストする。
問題なく追加できる。

<%@ page import="java.util.*,java.sql.*;" contentType="text/html; charset=Shift_JIS"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<META http-...続きを読む

Aベストアンサー

> ここで説明しているのは上記をJSPで記述すれば動作するということなのでしょうか

動作しません。
JSPのコンテナをサポートしたAPサーバやMySQLが必要で、
データソースの設定も必要です。
またJDBCのドライバも取得してクラスパスを通す必要があります。

>前提条件が良く分からないのです。或いは何が分からないのか良く分からないレベルです。

何が分からないのか分からない人に
何も教えることはできません。

>多分上記をaaa.JSPに作ればコンパイルされるので動くということかなと考えています

JSPを動作させる環境はあるということですか?
先にも述べましたが、動作させるにはドライバとデータソースの設定が必要です。

>コンテキスト、Web.Xml、Jap、Java、ViewBeanの関係が分かりません何とか御願致します。

そんなに丸投げをされてもあなた程の初心者に
ここですべての解説なんてできません。
もう少し質問事項を絞る必要があると思います。
あるいは適切な回答を得るためにはもう少しご自身の力で
せめて何が分からないのか整理する必要があるでしょう。

こっちのサイトの方が初心者向きでわかりやすいかと思います。
http://www.hellohiro.com/jdbcmysql.htm
http://www.hellohiro.com/datasource.htm

> ここで説明しているのは上記をJSPで記述すれば動作するということなのでしょうか

動作しません。
JSPのコンテナをサポートしたAPサーバやMySQLが必要で、
データソースの設定も必要です。
またJDBCのドライバも取得してクラスパスを通す必要があります。

>前提条件が良く分からないのです。或いは何が分からないのか良く分からないレベルです。

何が分からないのか分からない人に
何も教えることはできません。

>多分上記をaaa.JSPに作ればコンパイルされるので動くということかなと考えています

JSPを動作...続きを読む

Qjavaは実行できてjavacは実行できない

現在Javacコマンドを使ってコンパイルしようとしているのですが、「内部コマンドまたは~」とでてコマンドが実行できません。
ただしjavaコマンドは実行できます。versionは1.6.0_27です。

以上ですがなにか気づいた点があれば、助言していただけると幸いです。

Aベストアンサー

>補足を書いていてきづいたのですがPath最後へんでしたね。
>$JAVA_HOME\bin;
>に修正しました。がjavacは相変わらずです。

Windowsなら…
%JAVA_HOME%\bin;
じゃないですか?

ただし、JAVA_HOMEが
C:\Program Files\Java\jdk1.6.0_27
となっていれば…ですが。
# セミコロンで終わらない。

QJDBCとJDBCドライバのライブラリについて

JDBCのライブラリと、DBベンダーのJDBCドライバのライブラリは、
どのような役割分担になっているのでしょうか?

JDBCのライブラリ(ex. java.sql.Connection)は当然使った事がありますが、
DBベンダーのライブラリ(例えば、OracleのOJDBCのライブラリ)は使った事が無いな、、、

と思って質問しました。

Aベストアンサー

>例えば PreparedStatementのexecuteQuery() などは、
>実際にはベンダーのドライバのライブラリ側のメソッドを使っていると言うことですか??
そういうことです。

QClass.ForName("sun.jdbc.odbc.jdbcOdbcDriver")でエラー

JDBCでAccessへ接続しようとしているのですが、
ECLIPSE上で、Class.ForName("sun.jdbc.odbc.jdbcOdbcDriver")が「処理されない例外の型」とエラーになります。
これは、どうしてでしょうか?

環境は、
ECLIPSE3.0.2
j2sdk1.4.2を使用しています。

Aベストアンサー

>「処理されない例外の型」とエラーになります。

ECLIPSEのソースコードエディタに出てくるメッセージの話ですよね?

Class.ForName("sun.jdbc.odbc.jdbcOdbcDriver")

の例外を処理していないという意味でしょ。

tryで囲むとか、何らかの処理をすれば消えるはずです。


人気Q&Aランキング

おすすめ情報