• 締切済み

eClipseの動的WebプロジェクトHoge(hoge.hoge.c

eClipseの動的WebプロジェクトHoge(hoge.hoge.comのパッケージ名)のHelloWorld.javaのデバッグ付加 今Javaの勉強をしていますが、 Project : hoge Java package : hoge.hoge.com Java class名 : HelloWorld を作成しました。 TomCatを使用しています。 eClipseでtomCatのStart/Stopもできるようにしました。 そのあと、Javaファイルを作成し その中のクラス名 doGetで以下のようなプログラムを作成しました。 ● protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html; charset=iso-2022-jp"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>HelloWorld</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>HelloWorld</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } ● このデバッグをしようとしています。 デバッグの手順 1) _a)プロジェクト・エクスプローラで、"hoge"のプロジェクトのアイコンを右クリックして _「プロパティ」を選択。 _b)左側メニューから「TomCat」を選択 _c)右側に表示される画面の中の、TomCatプロジェクトのチェックボックスにチェックを入れる。 _d)コンテキストの欄には「/hoge」と入力 _e)OKボタン押下。 2) _a)同じく、(1)-a)の"hoge"のアイコンを右クリック _b)ショートカットメニューの「デバッグ」⇒「サーバーでデバッグ」をクリック。 3) サーバーでデバッグのウインドウが表示される。 _a)既存のサーバを選択にチェックが入れてある状態 _b)次へボタンを押下 _c)「Add and Remove」の画面が表示される _d)左側ボックスが「使用可能」、右側ボックスが「Configured」のボックスで __左側は、何もありません。 __右側には、"hoge"があります。 __このまま、「完了」ボタンを押す 4) 以下のようなエラーが出ます。    ↓↓↓ HTTPステータス 404 - /hoge/ ------------------------- type ステータスレポート メッセージ /hoge/ 説明 The requested resource (/hoge/) is not available. ------------------------- Apache Tomcat/5.5.20 基本的な事での質問とは思いますが、 1. なぜデバッグができないのか。 2. デバッグを出来るようにする方法は? の二点について教えていただけないでしょうか。 よろしくお願いします。

みんなの回答

  • Lieserl
  • ベストアンサー率81% (31/38)
回答No.5

ひょっとして、サーバーを実行したら、 すぐサーブレットが実行されると考えてますか? サーバーを実行すると、httpでのリクエストを待受けする状態になります。 ブラウザ等からのhttpリクエストを受け取って、初めてサーブレットが 実行されますので、サーバーを実行しただけではブレークポイントでは止まりません。

すると、全ての回答が全文表示されます。
  • Lieserl
  • ベストアンサー率81% (31/38)
回答No.4

プロジェクト名がhogeなので、デフォルト動作ではコンテキストルートはhogeになっているはずです。 (プロジェクトのプロパティで変更していなければ) web.xmlのservelt-mappingでurl-patternに/HelloWorldという定義があるので、 /hoge/HelloWorldをブラウザで表示しようとすれば、 servlet-nameで指定したHelloWorldというサーブレットが呼ばれます。 HelloWorldと名付けたサーブレットの実態は、 servletのservlet-nameがHelloWorldである、 servle-classで指定されている、hoge.hoge.com.HelloWorldになります。 しかしながら、/fuga/とコンテキストルートのみ指定した場合、 fugaプロジェクトの何を表示するのか指定していません。 この場合、web.xmlにwelcome-fileが指定されていれば、 そのファイルを表示しようと試みます。 例えば、index.jspと指定されて、WebContentディレクトリに index.jspがあればそれを表示しようとします。 それすら無ければ、Tomcatは表示するページが無い為、 404を返します。

humipinedesu
質問者

お礼

お返事ありがとうございます。 なんとなく、ご説明してらっしゃる事の意味はわかるのですが、今環境を作り直しているところですので、環境ができ次第、もう一度試し、ご指摘の点を自分で確認してみたいと思います。 もし、その時に何かわからないことがあれば、また質問させてください。 よろしくお願いします。

すると、全ての回答が全文表示されます。
  • Lieserl
  • ベストアンサー率81% (31/38)
回答No.3

404なので、デバッグ以前にページが見つかっていませんよね? http://localhost:8080/hoge/HelloWorld にアクセスすべきなのに、 http://localhost:8080/hoge/ と指定していない? DynamicWebProjectなら、デバッグモードでサーバーを起動すれば良いだけです。

humipinedesu
質問者

お礼

> http://localhost:8080/hoge/HelloWorld > にアクセスすべきなのに、 > http://localhost:8080/hoge/ > と指定していない? すみません。上の説明だけでは良くわからないです。 どこで、上のような設定をしているのかという事をすみませんが説明していただけないでしょうか。

humipinedesu
質問者

補足

> DynamicWebProjectなら、デバッグモードでサーバーを起動すれば良いだけです。 eClipseのツールバーにあるデバッグ用のボタンを押してサーバーでデバッグ実行を選択すると、正常に実行はされますが、ブレークポイントでは止まりません。 どうすれば、ブレークポイントで止まるのでしょうか。

すると、全ての回答が全文表示されます。
  • Lieserl
  • ベストアンサー率81% (31/38)
回答No.2

web.xmlにサーブレットを登録していないんじゃないかな?

humipinedesu
質問者

お礼

web.xmlを確認しましたが、正常のように思います。 以下にその内容を書きます。 ファイのパス : WebContent/WEB-INF/web.xml 値 Servlet -> display name ; HelloWorld -> servlet name ; HelloWorld -> servlet class; hoge.hoge.com.HelloWorld ServletMapping -> servlet name ; HelloWorld -> url pattern ; /HelloWorld どうもやり方によって結果が違うのを発見しました。 ネットで別のサイトを見ると TomCatプロジェクトを選択していました。 私は動的プロジェクトを選択してプロジェクトの作成をしましたが、これは別に問題はないのでしょうか。 あと、プロジェクト・エクスプローラの「hoge」のアイコンを右クリック→実行、または、デバッグは 両方ともうまくいきませんが ツールバーのデバッグのボタン、または、実行のボタンを押すと正常に実行できます。 しかし、デバッグのボタンを押しても、ブレークポイントで止まってくれません。

humipinedesu
質問者

補足

もう一度最初から、プロジェクトを作りなおしてみました。 すると、一か所、ネットのサンプルと違うところを発見しました。 それは 自分の環境では、HelloWorldのクラスを作成するときの画面で、インターフェースのボックスで「javax.servlet.Servlet」がなくて選択できないという事です。 そして、出来上がったソースをみると ネットのサンプル↓ public class HelloWorld extends javax.servlet.http.HttpServlet{ となっていますが、 私の環境では public class HelloWorld extends HttpServlet{ となっています。 これが、デバッグ実行でブレークポイントで止まらない事の理由でしょうか。。。 私的にはあまり関係なさそうな気もしますが。 それと、私がインストールしたJava は、Java EE v1.6で ネットのサンプルは Java SEのようです。 この違いが影響しているということでしょうか。。。

すると、全ての回答が全文表示されます。
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

Tomcatプロジェクトが正常に作成されていたら EclipseからTomcatを起動すれば デフォルトの状態でデバッグができるわ。

humipinedesu
質問者

お礼

アドバイス、ありがとうございます。しかし、そのTomcatプロジェクトが正常に作成されていたら・・・というの、それは、eClipseで作るものですよね。もちろん。 私が作ったのは、最初は、動的Webプロジェクトを選択して作りました。 そして、そのあと、プロジェクト・エクスプローラで、"foge"のアイコンを右クリックして、プロパティを選択し、TomCatのとこをチェックしたんです。 これは、私の質問の中に詳しく説明していますので、詳細は省きますが。。。 どうしたら、その正常に作成されているかどうか確認できますでしょうか・・・

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

関連するQ&A