• ベストアンサー

サーブレットのクラスパス追加について

Tomcatを用いたWebアプリケーション作成についてご質問させてください。 Webアプリケーション実行時に読み込まれるクラスパスを任意に追加することは可能でしょうか。標準では{CONTEXT_ROOT}/WEB-INF/classesと{CONTEXT_ROOT}/WEB-INF/libにあるクラスがサーブレット上で実行されるクラスとして読み込まれますよね。これ以外に任意のディレクトリをクラスパスとして追加し、そのディレクトリにあるクラスをサーブレット上で実行したいのですが、可能でしょうか。 環境変数にクラスパスを設定してみたり、{TOMCAT_HOME}/bin/setclaspass.shにクラスパスを追加してみたりもしたのですが、結果は両方ともNoClassFoundExceptionでした。 ご教示お願いいたします。

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

  • ベストアンサー
  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.4

一般的にアプリケーションサーバでは、アプリケーションサーバ自体が使用するクラスローダと、Webアプリケーションが使用するクラスローダを明確に分けている場合が多いです。 また、アプリケーションサーバ起動時に指定するclasspath指定はアプリケーションサーバ自体が使用するクラスへのパスを指定するのが普通です。 Tomcatでは、複数のWebアプリケーション間で共通で使用するクラスの格納先が指定されているようです。ただし、Tomcat3.x系と、4.x系以上とでは違いがあるようです。 詳しくは、以下のドキュメントを参考にしてください。 Tomcat3.x系 http://jakarta.apache.org/tomcat/tomcat-3.3-doc/tomcat-ug.html#configuring_classes Tomcat4.x系 http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html Tomcat5.x系 http://jakarta.apache.org/tomcat/tomcat-5.0-doc/class-loader-howto.html

noname#61135
質問者

お礼

ご回答ありがとうございます。ご提示いただいたURLで調べてみようと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

#2です。 失礼しました。 >TOMCAT_HOME}/bin/setclaspass.shにクラスパスを追加… 自分の回答は↑の部分に思いっきり書いてありましたね。 熟読せずに回答してしまい申し訳ありませんでした。 m(_ _)m

noname#61135
質問者

お礼

ご回答いただきありがとうございます。Tomcatを起動する為のシェルスクリプトにはクラスパスを指定したのですけどダメでした。もうちょっと色々がんばってみようと思います。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

(Tomcatの起動についてそこまで詳しくないので、憶測です。) Tomcatを起動するときにJavaVMを起動しているはずなので、そのsh?ファイルか何かで java -cp ~ とか jre -cp ~ とかやってるとしたらそこにクラスパスを付け加えてみては? (って憶測ですので、そんなshファイルないかもです。)

全文を見る
すると、全ての回答が全文表示されます。
  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.1

私は {JAVA_HOME}/jre/lib/ext ディレクトリにclassファイルをjarにまとめて貼り付けています。

noname#61135
質問者

お礼

ご回答いただきありがとうございます。ご提示いただいた方法を試してみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • サーブレットでコンパイルがうまくいきません。

    質問させて下さい。サーブレットでコンパイルがうまくいきません。 どうか教えて下さい。 エラーはこのとおりです。ディレクトリはC:\Program Files\Tomcat5\webapps\entry\WEB-INF 実行しました。 c:\>set classpath CLASSPATH=C:\Program Files\Tomcat5\common\lib\servlet-api.jar c:\>cd C:\Program Files\Tomcat5\webapps\entry\WEB-INF C:\Program Files\Tomcat5\webapps\entry\WEB-INF>javac src/HelloServlet.java -d classes エラー: src/HelloServlet.java を読み込めません。 エラー 1 個

  • Tomcatのクラスパス

    OSの環境変数で指定したclasspathと Tomcatのクラスパスは違うようですが、 Tomcatの場合web.xmlに記述するのでしょうか? 1つのjavaクラスを、サーブレットから、 Runtime.getRuntime().exec() で実行したい場合、Tomcatのweb.xmlなどにクラスパスを指定するのでなく、-classpathを指定した方が良いのでしょうか?

    • ベストアンサー
    • Java
  • サーブレットの実行について

    本を読んでjavaの勉強をしているのですが、本が 古いせいか、サーブレットの実行がうまくいきません。 いろいろ検索し下記サイトを参考にして、 http://www.hellohiro.com/servlet.htm まずTomcat(apache-tomcat-4.1.36)をダウンロードし、 下記のように環境変数を設定しました。 JAVA_HOME-- C:\j2sdk1.4.2_16 CLASSPATH-- .;%JAVA_HOME%lib\tools.jar PATH -- C:\j2sdk1.4.2_16\bin そしてファイルをコンパイルし、本のとおりに Tomcat下にYJKSample\06\web-INF\classesとフォルダを作成、 コンパイルしたクラスファイルをclasses内に置き、 http://localhost:8080/YJKSample/06/servlet/Sample1 と指定してみましたがうまくいきません。 ところがサイトのとおりにTomcat\webapps\examples\WEB-INF\classes 下にクラスファイルを置いて、 http://localhost:8080/examples/servlet/Sample1 と指定するとうまくいきました。 本を読み進めるにあたって、やり方がかなり違ってくるため できれば本のとおりにやりたいのですが、うまくいく方法は ないでしょうか? 何がいけないのかわからず頭を痛めています。 どなたかお知恵をいただけると幸甚です。 ちなみにOSのバージョンはWindows XP HomeEditionです。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • サーブレットの実行について

    サーブレットの実行について http://www.hellohiro.com/servlet.htm こちらを参考しながら設定してみたのですが、 アクセスしても404エラーでページが表示されません。 Tomcatをインストールし http://localhost:8080 にてindex.jspが表示されることは確認できました。 Tomcat起動後 http://localhost:8080/manager/htmlからアプリケーションjavahelloを設定しました。 そして サーブレットファイル(A.class)を[Tomcatのフォルダ]\javahello\WEB-INF\classesの下にコピーし、 http://localhost:8080/javahello/servlet/A とブラウザにしてすると404エラーになってしまいます。 何か設定が足りていないのでしょうか? どなたか教えてください。よろしくお願いします。 環境 Windows XP Tomcat 5.5

    • ベストアンサー
    • Java
  • サーブレットとJSPのディレクトリ指定について

    現在WebサーバーとしてTomcatを使用しているのですが、題記の通り質問があります。 JSPのディレクトリ構成は C:\Program Files\Apache Tomcat 4.0\webapps\(JSPを保存するディレクトリ) というようにwebappsのしたにディレクトリを作成しました。 JSPからサーブレットを呼ぶために、 現在は C:\Program Files\Apache Tomcat 4.0\webapps\(JSPを保存するディレクトリ) \WEB-INF\classesディレクトリに格納しています。 できれば、sevletディレクトリを作りわかりやすい構成にしたいのですが、 そのようにやることはできるのでしょうか?

  • どうしても、サーブレットを見つけてくれない場合の解決方法

    ルートディレクトリからWEB-INFを辿って、classesまで行き、そこにパッケージ化したクラスファイルを置きます。 それでも何故かサーブレットを見つけてくれません。 PC上には他に、EclipseとJudeというUML開発ツールが入っています>関係ないかもしれませんが。 勿論、invokerのコメントを外し、サーブレットも使えるのですが……。 とても困っています。 どんな方法でも構いませんので、是非ともレスを下さい。お待ちしております。

  • Javaサーブレット開発環境について

    学校でサーブレットの勉強をしているのですが、家でもやろうとしてTomcatをパソコンに入れたのですが、サーブレットだけで次のようなエラーが発生します。 例外 javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです 環境変数は CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 5.0 CLASSPATH .;C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\s\WEB-INF\classes JAVA_HOME C:\j2sdk1.4.2_10 PATH C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\s; ちなみにサーブレットのファイルは C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\s\WEB-INF\classes に入れてあります。 どなたかよろしくお願いします。

  • tomcat サーブレットエラー

    表題の件、原因がつかめず困っています。 何かアドバイスある方いらっしゃれば是非お願いいたします。 環境 Linux/FedoraCore5 tomcat6.0.10/Webポート8080 apacheは使っていません /usr/local/bin/tomcat/conf/Catalina/localhost/fs.xmlの設定 <Context path="/fs" reloadable="true" docBase="/usr/local/sample/d emo/data" crossContext="false" cookies="false" /> /usr/local/sample/demo/data/WEB-INF/web.xmlの設定で、 あるサーブレットクラスを呼び出すようにしています。 そのクラス内で、net.sample.sql.ConnectionManagerという クラスを呼び出しているのですが、実行時に以下のエラーが出ます。 java.lang.NoClassDefFoundError: Could not initialize class net.sample.sql.ConnectionManager net.sample.sql.ConnectionManagerはsample.jarに含まれており、 /usr/local/sample/demo/data/WEB-INF/lib/に配置しています。 (呼出元のクラスもこのディレクトリにあります。) 原因となりえる場所として、考えられることは何かありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • fedora10+eclipse3.42+tomcat6にて

    動的Webプロジェクトでstrutsしているのですが 動的Webプロジェクトでプロジェクト(ProjectX)を作ると Javaソース場所がProjectX/srcとなり クラス出力場所がProjectX/build/classesとなります。 ところがeclipseからTomcat6を起動した場合 クラス出力場所がProjectX/WebContent/WEB-INF/classesでなければ JavaClassにアクセスできずTomcat6が機能しません。 またProjectXに設定したクラスパスは Javaファイルのコンパイルには有効なものの ProjectX/WebContent/WEB-INF/classes以下のJavaクラスの実行時には無効なので ProjectX/WebContent/WEB-INF/lib にJarファイルを配置しなくてはなりません。 eclipse3.42のEclipise IDE for Java EE Developers を使ってTomcat6の開発をしている人は どのようにこの配置の問題を解決しているのでしょうか?

    • ベストアンサー
    • Java
  • クラスファイルの配置について

    初めまして。 質問したいことがあります。 私の環境は OS:RedHatLinux7.2 JDK:1.3.0_02 Tomcat:ver3.2.4 です。 servletの動作について (1)tomcat/WEB-INF/test/classes/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/helloと入力すると正常に動 作しました。 次に (2)tomcat/WEB-INF/test/classes/sample/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/sample/helloと入力すると Error 500 Internal Servlet Errorというエラーが発生しました。 server.xmlには <Context path="/test"    docBase="webapps/test"    crossContext="false"    debug="0"    reloadable="true" > </Context> を追加しているだけなのですが、Tomcatではクラスファイルは絶対にclassesディレクトリの直下に配置しなければならないのでしょうか? (2)のclasses-sample-hello.classというように、classesディレクトリとクラスファイルの間にディレクトリが存在すると駄目なのでしょうか? もし何かわかることがありましたらご教授御願い致します。

    • ベストアンサー
    • Java
シャットダウンする
このQ&Aのポイント
  • Windows10で突然シャットダウンする現象が発生しています。キーボードの接続に問題があるかもしれません。詳細な情報を教えてください。
  • OKWAVEより補足:エレコム株式会社の製品に関する質問です。問題の発生時期は2022/07/21です。問題の詳細や画像を添付してください。
  • ご利用の製品はTK-FDP098です。キーボードを使っている際に突然シャットダウンする問題が起きています。ソフトやハードの切り分けを行い、問題がキーボードに関連していることを確認しました。
回答を見る

専門家に質問してみよう