- PR -

Linuxでservletが表示されない

投稿者投稿内容
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-15 18:01
>HTTPステータス500 javax.servlet.ServletException: クラスHelloWorldは
>サーブレットではありません
ということなので、サーブレットではないのでは?
HttpServlet を継承していますか?
doGet とか実装していますか?
Windows でもサーブレットとして動作していましたか?
"java.io.FileNotFoundException: /usr/tomcat/webapps/XXX/WEB-INF/classes/HelloWorld (No such file or directory) " のエラーは web.xml のクラス名の定義を変えることでパスが変わりますか?
切り分けのために YYY.HelloWorld を指定して
"java.io.FileNotFoundException: /usr/tomcat/webapps/XXX/WEB-INF/classes/YYY/HelloWorld (No such file or directory) " と表示されるか確認してみてはいかがでしょう。
タスマニア三郎
会議室デビュー日: 2007/05/10
投稿数: 15
お住まい・勤務地: 馴れ合いの果て
投稿日時: 2007-05-15 18:15
引用:

インギさんの書き込み (2007-05-15 18:01) より:
>HTTPステータス500 javax.servlet.ServletException: クラスHelloWorldは
>サーブレットではありません
ということなので、サーブレットではないのでは?
HttpServlet を継承していますか?
doGet とか実装していますか?
Windows でもサーブレットとして動作していましたか?



大変申し訳ありません。
大きな勘違いをしていました。
HelloWorld.javaは
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
というもので、サーブレットではありませんでした。

そこで、WinXPでコンパイル、実行できたMyServlet.javaをサーバでコンパイルしようと
したところ、エラーが発生しました。

以下MyServlet.java
package XXX;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet{
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{
response.getWriter().println("hello");
}
}

以下エラー
MyServlet.java:4: パッケージ javax.servlet は存在しません。
import javax.servlet.ServletException;
^
MyServlet.java:5: パッケージ javax.servlet.http は存在しません。
import javax.servlet.http.HttpServlet;
^
MyServlet.java:6: パッケージ javax.servlet.http は存在しません。
import javax.servlet.http.HttpServletRequest;
^
MyServlet.java:7: パッケージ javax.servlet.http は存在しません。
import javax.servlet.http.HttpServletResponse;
^
MyServlet.java:9: シンボルを見つけられません。
シンボル: クラス HttpServlet
public class MyServlet extends HttpServlet{
^
MyServlet.java:10: シンボルを見つけられません。
シンボル: クラス HttpServletRequest
場所 : hoge.MyServlet の クラス
protected void doGet(HttpServletRequest request,
^
MyServlet.java:11: シンボルを見つけられません。
シンボル: クラス HttpServletResponse
場所 : hoge.MyServlet の クラス
HttpServletResponse response)
^
MyServlet.java:12: シンボルを見つけられません。
シンボル: クラス ServletException
場所 : hoge.MyServlet の クラス
throws ServletException, IOException{
^
エラー 8 個

自分のミスでわけのわからないことをしたのに、お願いするのも大変心苦しいのですが
もう少しだけ付き合っていただけないでしょうか?
お願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-15 18:38
とりあえずサーブレットを動かすことが目的であればまず .class ファイルをそのままコピーして動かしてみてはいかがでしょうか?
Write once, run anywhere ですから。

コンパイルの仕方について分からないのであれば、まずもう少し Google などでしらべてみてはいかがでしょう。
それでもわからなければ焦点を明確にするためにも別スレッドにしてはいかがでしょう。
タスマニア三郎
会議室デビュー日: 2007/05/10
投稿数: 15
お住まい・勤務地: 馴れ合いの果て
投稿日時: 2007-05-16 09:40
引用:

インギさんの書き込み (2007-05-15 18:38) より:
とりあえずサーブレットを動かすことが目的であればまず .class ファイルをそのままコピーして動かしてみてはいかがでしょうか?
Write once, run anywhere ですから。

コンパイルの仕方について分からないのであれば、まずもう少し Google などでしらべてみてはいかがでしょう。
それでもわからなければ焦点を明確にするためにも別スレッドにしてはいかがでしょう。



おはようございます。
コンパイルについては、classpathを通していなかったという
ド素人のミスでした…。

次に、servletについてなんですが、
WinXPで動いていたもの、Linuxでコンパイルした2つとも動きませんでした。

結果は以下のとおりです

クラス名:MyServlet
WEB-INF/web.xml
<servlet-name>MyServlet
<servlet-class>XXX.MyServlet
<url-pattern>/MyServlet

-http://localhost:8080/XXX/MyServletの時
>tomcatを再起動直後

HTTPステータス500
例外)javax.servlet.ServletException: ラッパがサーブレットクラス
XXX.MyServlet 又はそれが依存するクラスを見つけることができません

原因)java.lang.ClassNotFoundException: XXX.MyServlet

>更新ボタンを押下
HTTPステータス404 サーブレットMyServletが利用できません

-http://localhost:8080/XXX/servlet/MyServletの時(web.xmlを削除後)

>tomcat再起動後、更新関わらず
HTTPステータス404 - /XXX/servlet/MyServlet

以上です。
エラーの内容から、MyServletクラスが見つかっていないということだと思うのですが
正しいでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-16 11:55
>エラーの内容から、MyServletクラスが見つかっていないということだと思うのですが
>正しいでしょうか?
ご認識の通りです。Windows で実行していたときと同じようにクラスが正しく配置されているか確認しましょう。

>-http://localhost:8080/XXX/servlet/MyServletの時(web.xmlを削除後)
>
>>tomcat再起動後、更新関わらず
>HTTPステータス404 - /XXX/servlet/MyServlet
そもそも Windows では /XXX/servlet/MyServlet で実行できているのでしょうか?繰り返しになりますが、InvokerServletがデプロイされているとすれば、アクセスすべきなのは /XXX/servlet/XXX/MyServlet になるのではないでしょうか?

[ メッセージ編集済み 編集者: インギ 編集日時 2007-05-16 17:04 ]
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-18 13:03
javac の classファイル排出先、web.xml の設定を見直すべきかも

自作classファイルのClassNotFoundException や 404 などはね

スキルアップ/キャリアアップ(JOB@IT)