• ベストアンサー

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

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