• ベストアンサー

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
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

OS は何でしょうか? JSP の実行時の CLASSPATH は、tomcat を起動するときの環境が引き継がれる ので、 ・tomcat.bat / tomcat.sh をいじる ・unix 環境であれば、$(HOME)/.tomcatrc に CLASSPATH を追加する記述を書く ・もっと安直に JDBC ドライバが入っている jar を WEB-INF/classes/ に置く ってなところを思いつきます。

hiro_ayu
質問者

お礼

すいません、OS書き忘れてました。Windows2000です。 お答えの通りやってみたら、うまくいきました。 tomcat.bat をいじって解決しました。 ありがとうございました。 さらに、今、サービスとしてTomcatを動かしているので、この話を参考に探したところ、%TOMCAT_HOME%\conf\wrapper.propertiesに、これに相当する設定があり、そこを書き換えてうまくいきました。 ありがとうございました。

その他の回答 (1)

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.1

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

hiro_ayu
質問者

お礼

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

関連するQ&A

  • Tomcat6.0でのJSP

    Tomcat6.0を使ってJSPファイルからMYSQLへ接続しようとします。 ブラウザーからアクセスするとしたのようなエラーが表示されます。 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver javaでMYSQLへアクセスするソースを作成しコンパイルして実行すると 正常にMYSQLにアクセスできました。 com.mysql.jdbc.Driverがないとは思うのですが。。。。 まず、何から調べたらいいのか?教えてください

  • CLASSPATHを設定しても、『ClassNotFound~』になってしまう

    はじめまして、質問をさせていただきます。 JDBCを利用して、データベースにアクセスするため、2週間前から javaを勉強している初心者です。 色々なサンプルを参考にして、javaコードを作成しましたが、 java実行時に『ClassNotFoundException』になってしまいます。 過去の質問から、No.952983やNo.957189を参考にさせていただき、JDBCドライバー をダウンロードし、CLASSPATHの設定をしてみましたが変わりませんでした。 その後も色々と調べましたが、なぜCLASSPATH設定が有効にならないのか分かりません。 お手数かとは思いますが、御教授のほどよろしくお願いします。 サーバのOS :LINUX(FedoraCore5) データベース :Postgresql8.1.4(rpmでインストール) JDKのVer   :1.5.0_08 JDBCドライバー:postgresql-8.1-407.jdbc3.jar ↓.bash_profileの設定 export JAVA_HOME=/usr/java/jdk1.5.0_08 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/$JAVA_HOME/lib/postgresql-8.1-407.jdbc3.jar ↓『set』コマンドで確認したCLASSPATH CLASSPATH=.:/usr/java/jdk1.5.0_08/lib/tools.jar://usr/java/jdk1.5.0_08/lib/postgresql-8.1-407.jdbc3.jar 以上

    • ベストアンサー
    • Java
  • SQLサーバーに接続させたい(JSP使用)

    宜しくお願いします。 現在 JSP + TOMCAT + APACHE + WIN2000SERVER + SQLServerで タイトルのようなことを実現しようとしています。 本や、WEBでしらべてみると MySQLをつかった例が多く、 それをマネて多分もうちょっとで実現できる というところまできていると思うのですが。。 MySQLをつかった例は、 Class.forName("org.gjt.mm.mysql.Driver"); Connection db = DriverManager.getConnection("jdbc:mysql://localhost/[DB名]?user=sa&password="); となっており、 ドライバ名の「mysql」の部分をSQLサーバー用のドライバに 変更すればつながるとおもっているのですが、 ドライバ名が分からず困っております。 (ユーザIDやパスワードはSQLサーバ用に変更しています) 「sqlserver」「odbc」そのほかDSN名などもためしてみたのですが やはりエラーとなってしまいます。 (もしかしてドライバの呼び出し方がおかしいのでしょうか? Class.forName("org.gjt.mm.mysql.Driver"); の「org」や「gjt」などの意味は実は分かってないのです・・。) 何かお気づきの方が居られましたら ご教授ください宜しくお願いします。

    • ベストアンサー
    • Java
  • MySQLのJDBCドライバについて

    現在、MySQL3.2.3を使ってJSPの学習をしています。ドライバはmm.mysql-2.0.4-bin.jarを使用しています。 色々なホームページを調べると、 Class.forName(ドライバ名); のドライバ名が、org.gjt.mm.mysql.Driverとcom.mysql.jdbc.Driverの2つが紹介されているのですが 何が違うのでしょうか? ちなみに私の環境では前者の方だとうまくいくのですが後者だと javax.servlet.ServletException:com.mysql.jdbc.Driver のエラーになってしまいます。 MySQLのドライバによって違ってくるのでしょうか? 初歩的な質問で申し訳ございませんが教えてください。 その他環境: OS:Windows ME JDK1.4.0 Tomcat4.0 を使用しています。

    • ベストアンサー
    • Java
  • JAVA ServletでSQL Serverに接続できないんですが。

    マイクロソフトのサイト(SQL SERVER2000 Driver for JDBC)から ドライバーを取ってきて、JAVAからDB接続テストを行っています。 最初に簡単なJAVAアプリを作って実行したところ、うまく動作しました。その後、Servletで同様のtestをしたところ、Tomcatのコンソール画面に、ClassNotFoundExceptionが出て、実行できません。 下記の命令が、処理できないようです。 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); CLASSPATHの設定もコマンドプロンプトで、setコマンド実行結果で確認済みです。 他のデータベース(MySQL)では、Servlet,JSP,JAVAアプリすべて、うまく実行できました。 ご存知の方、よろしくお願いいたします。 環境:(1台のマシン内での仮想ネットワーク) windows XP Pro (SP1) j2SDK 1.4.1_03 Tomcat4.1 SQL Server2000

  • Javaアプリケーションで動くJDBCがサーブレットで動かない

    Javaアプリケーションでは動いていたJDBCのソースをサーブレットの中に組み込むと例外が発生して動きません。 JDBCドライバ(Thinドライバ)をDriverManagerに登録するところ  Class.forName("oracle.jdbc.driver.OracleDriver"); でClassNotFoundExceptionが発生します。 何か設定が足りないのでしょうか? どこを確認すべきか教えてください。お願いします。 ちなみに環境は以下の通りです。 ・Windows2000 ・Apache1.3.26 ・Tomcat3.2.4 ・JDK1.3.1_02

    • ベストアンサー
    • Java
  • Tomcatインストール時に付属してあるexampleのJSPについて

    はじめまして。 JSPについて質問があります。 Tomcatインストール時に付属してあるデフォルトページのexampleのServletについては実行できたのですが、exampleのjspについては実行できず、ブラウザにエラーが表示されました。 エラー内容: ------------------------------ Error: 500 Location: /examples/jsp/num/numguess.jsp Internal Servlet Error: javax.servlet.ServletException: sun/tools/javac/Main (以下略) ------------------------------ ちなみに自分で作成したJSPファイルも実行できず、exampleのjspと全く同じ内容のエラー内容がブラウザに表示されました。 ちなみに開発環境は RedHatLinux7.2 Java2 SDK 1.3.0 Jakarata Tomcat 3.2.4 で、 環境変数は JAVA_HOME=/usr/java/jdk1.3.0_02 TOMCAT_HOME=/usr/src/jakarta/tomcat PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:/usr/java/jdk1.3.0_02/lib/tools.jar:$TOMCAT_HOME/lib/servlet.jar です。 クラスパスには、JDKのコンパイラ、サーブレットのコンパイラを設定しているのですが、設定に何か足りないのでしょうか? 大変困っています。 もし、何か分かる事がありましたら、ご教授御願い致します。

    • ベストアンサー
    • Java
  • サーブレットは動くがJSPだけ動かない

    Servlet/JSPでの開発をTomcatで行っているのですが、webapps/examples/jspの JSPサンプルが起動しませんでした。Internal Servlet Error 500が返されてしまい ます。 開発環境 Windows 2000 Java2 SDK 1.3 Jakarata Tomcat 3.2.1 環境変数 TOMCAT_HOME=C:\jakarta-tomcat-3.2.1 JAVA_HOME=C:\jdk1.3 PATH=%PATH%;C:\jdk1.3\bin CLASSPATH=%CLASSPATH%;C:\jakarta-tomcat-3.2.1\lib\servlet.jar 気になるのは、Oracle8iのトライアル版をインストールして いる点です。Oracleをインストールすると以下のような環境変数が設定されます。 Oracleインストール後の環境変数Path Path=C:\Oracle\Ora81\bin;C:\Program Files\Oracle\jre\1.1.7\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\jdk1.3\bin;C:\Oracle\Ora81\orb\bin 1.1.7のjreがかなり怪しいとは思うのですが。 もう一度、質問をまとめてみます。 ・exampleサーブレットは動くが、example JSPだけが動かないのはどうしてでしょう? ・とにかくJSPだけを動かしたいのですが、方法はあるでしょうか?  (JDBC接続を行うため、Oracleは削除できないという前提で) 皆様の知恵をお貸しください。

    • ベストアンサー
    • Java
  • サーバー上でのjdbcの認識方法

    DB接続のためのクラスを作成しローカルにてソースをコンパイルし サーバ(OSはソラリス)上のTomcatにてサブレットを実行すると java.sql.SQLException: No suitable driver とエラーが出ます。jdbcを認識していないかclasspathが間違えているとまでは, わかるのですが、これはクラスのソースをコンパイルする際にローカル上にて、jdbcのclasspathを指定してコンパイルしなければいけないのでしょうか? それともサーバーのclasspathの設定に問題があるのでしょうか? またローカル上にてjdbcを置いてコンパイルする必要があるならばどこにjdbcを置いてclasspathを指定すれよいのでしょうか? どなたか力を貸して下さい お願いします

    • ベストアンサー
    • Java
  • ServletでJDBCを使う時

    servletでJDBCを使ってデータベースに接続しようと思っていますが、 servletのdoGetの中で、 Class.forName("com.mysql.jdbc.Driver"); と書くとClassNotFoundExceptionエラーになります。 public static Connection getConnection() などのクラスを作って、その中で Class.forName("com.mysql.jdbc.Driver"); と書くとエラーにはならないのですが、doGetの中では宣言できないのでしょうか?自分が何か勘違いしていたら申し訳ございません。 ご助言お願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう