プロが教える店舗&オフィスのセキュリティ対策術

サーブレットを実行したときにTomcatでこのようなエラーが出てしまいます。

http://aohina.boy.jp/err.bmp

クラスパス&パスはすべて通してあり、http://localhost:8080/には接続できますのでTomcatは動いてると思います。

Tomcatのバージョン:5.5.9
Javaのバージョン:jdk1.5.0_02
ここを参考にサンプルプログラムを作ろうと思ってます。
http://www.hellohiro.com/servlet.htm

A 回答 (3件)

こんにちは、invokerの設定では私も四苦八苦した覚えがあります。


未だに勉強中ですので間違った内容かも知れませんが、何かのヒントになれば幸いです。

>ラッパがサーブレットクラス javahello.HelloWorldServlet ・・・を見つけることができません。
上記のメッセージから、servlet-api.jarにパスは通っていて、invokerクラスは呼び出せていますね。

>java.lang.ClassNotFoundException: javahello.HelloWorldServlet
このメッセージからは、javahelloパッケージに属しているHelloWorldServletを見つけることができていないことが分かります。

javahelloパッケージに属しているjavahello.HelloWorldServletにアクセスする場合は、
http://localhost:8080/javahello/servlet/javahell …
というようにクラス名をパッケージ名を含めた完全修飾子で指定する必要があります。
(ソースの先頭には、package javahello;が記述されていますよね。)

私の理解している範囲で一般的な名称で書き直すと、以下のようになります。
http://localhost:8080/[コンテキストパス]/[サーブレットマッピングで指定したURLパターン]/[パッケージ].[サーブレット]
サーブレットがパッケージに属していない場合は、[パッケージ].の部分は不要です。

【補足】
%TOMCAT_HOME%\conf\Catalina\localhost\javahello.xmlは作成してあるでしょうか?
もし作成していないのならば、以下の内容を記述して下さい。
<Context path="/javahello" docBase="[%TOMCAT_HOME%のパスを設定]\webapps\javahello" reloadable="true"/>

【補足2】
以前のQAでお勧めしたTomcatハンドブックですが、実は私も購入しておりません(笑)
invokerの設定で悩んだ時に立ち読みしまして、内容が良かったのでお勧めしました。

参考URLにはTomcat5.x系でのServletの実行方法がありますので、そちらもどうぞ。

参考URL:http://www.javaroad.jp/opensource/js_tomcat2.htm

この回答への補足

できました!!ありがとうございました;;

補足日時:2005/05/10 09:20
    • good
    • 0

「クラスパス&パスはすべて通してあり」とありますが、


ClassNotFoundException
と表示されている以上、TOMCATがサーブレットクラスを認識できていないようですね。
サーブレットクラスが、どこのディレクトリに入っているのか確認してください。WEB-INF/classes/javahelloに置いているのか、それ以外なのかご確認ください。
    • good
    • 0

現行のTomcatでは、servlet/サーブレットクラス名 でのアクセスができないはずです。

これはセキュリティ上の観点からデフォルト設定で無効にされていたような・・・
上記の設定を解除するか、web.xmlにサーブレットマッピングの設定をしてください。これらについては自分でお調べください。

この回答への補足

サーブレットマッピングの設定はしてあるんですが・・・ダメみたいなんです。

補足日時:2005/05/06 11:26
    • good
    • 0

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