[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00151] Re: Generated servlet error



徳@東芝ITソリューションです。

まず、Tomcatでは、WEBアプリケーションの配置は、
$TOMCAT_HOME/webapps/
以下に行うことになっています。
おそらく、Tomcatをインストールした直後(1度起動しないと出来ないかもしれませんが)
は、上記ディレクトリにexamplesなどがあると思います。
これが、Tomcat上で1つのWEBアプリケーション(コンテナ)というものです。

さらに、この一つ下の階層ですが、examples/WEB-INF/classes、examples/WEB-INF/libというディレクトリがあ
ると思います。
TomcatはWEB-INF/classesディレクトリに配置されたディレクトリ内のclassファイル、及びWEB-INF/libディレ
クトリ
に配置されたjarファイルもクラスの検索対象に含んでくれます。
つまりは、1つのWEBアプリケーション(コンテナ)のみで使用されるようなclassファイル等は、
WEB-INF/classes以下に配置すれば問題無いということです。
※ちなみに、WEB-INF/classesは、examples/servlet/という仮想パスでクライアントからアクセスされます。
(これ以上の詳細についてはhttp://www.ingrid.org/jajakarta/tomcat/で御願い致します);

さて、今回の場合で見てみますと、

> > エラーを見る限り、TomcatがJSPをコンパイルするにあたって、上記ProductListBeanという
> > クラスが見つからないといっております。
> > 以下の点を確認願います。
> > 1.ProductListBean.classがあること(これはあるようですが。。。)
> 上記に示したようにsrcディレクトリ下にあります。

このProductListBeansですが、どうもパッケージ化されていないようですね。(以下を見る限り)

> <%@ page import="javax.servlet.*" contentType="text/html; charset=euc-jp" %>
> <jsp:useBean id="itemlist" class="ProductListBeans" scope="session" />

ということで、WEB-INF/classesにProductListBeans.classファイルを移動するだけではダメなようです。
対策としては、本クラスが存在するディレクトリをCLASSPATHに含めるという方法と、
本クラスを適当なパッケージとしてやる方法があります。
後者の方法としては、たとえばhogeパッケージに含めるとすると、
1.まずProductListBeansクラスのソースの先頭に「package hoge;」と一行追加し、コンパイルする。
2.WEB-INF/classesディレクトリに、「hoge」ディレクトリを作成する。
3.1.でコンパイルして生成したProductListBeans.classを2.で作成した「hoge」ディレクトリ下に配置す
る。
4.本クラスを使用するJSPを、
    <jsp:useBean id="itemlist" class="hoge.ProductListBeans" scope="session" />
  とする。
以上です。


#本件、元々は某書籍を読みながらやっているとのことでしたが、
#WEBアプリケーションのデプロイについては記載されていないのでしょうか?
#もし、記載が無いのであれば、それはあまりお勧めできない書籍ということ
#になってしまいますが。。。
#もう一度、書籍を読み返してみることをお勧めします。

//徳 淳@TOSHIBA IT-SOLUTIONS CORPORATION<Toku.Kiyoshi@xxxxxxxxxxxxxxxx>