• 締切済み

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. デバッグを出来るようにする方法は? の二点について教えていただけないでしょうか。 よろしくお願いします。

  • Java
  • 回答数5
  • ありがとう数12

みんなの回答

  • 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

  • Fedora10でHelloWorld.javaをコンパイル

    すると以下のようにエラーがでます。 何が原因でしょうか? /root/HelloWorld.java: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } [root@prime ~]# javac -classpath /usr/share/tomcat6/lib/tomcat6-servlet-2.5-api-6.0.18.jar HelloWorld.java ---------- 1. WARNING in HelloWorld.java (at line 5) public class HelloWorld extends HttpServlet { ^^^^^^^^^^ The serializable class HelloWorld does not declare a static final serialVersionUID field of type long ---------- 1 problem (1 warning) [root@prime ~]# ただし、 /usr/share/tomcat6/lib/tomcat6-servlet-2.5-api-6.0.18.jar に使用したapiクラスは含まれています。 The serializable class HelloWorld does not declare a static final serialVersionUID field of type long の意味を教えてください。

    • ベストアンサー
    • Java
  • Tomcat6.0 日本語が?に文字化け

    HelloWorld!!はろぅわーるど!! と書いてコンパイルすると、IEの画面で HelloWorld!!????????? と表示されます。 日本語というよりは2バイト文字が文字化けしているのかなと思います。 何が足りないのでしょうか。 どなたかよろしくお願いします。 全文はこんな感じです。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getWriter(); out.println("<html>"); out.println("HelloWorld!!はろぅわーるど!!"); out.println("</html>"); out.close(); } }

  • eclipseを使用してTomcatのサーブレットをステップ実行でデバ

    eclipseを使用してTomcatのサーブレットをステップ実行でデバックしたいのですが なぜかhttp404エラーが出てしまいます。何かeclips側で設定が漏れているのでしょうか。 当方の使用環境は Windows7 tomcat6.0 Apache2.2(Tomcatと連携) eclipse pleiades All in One for java Developers 3.6 です。 手順は以下の通り行いました。 ・メニューのウィンドウ→ビューの表示→サーバーを選択。 ・サーバービュー上で右クリック→新規→サーバーを選択。 ・表示された画面で「サーバのタイプ:tomcat6.0」を選択し、サーバのホスト名に"localhost"を入力し「完了」ボタン押下。(その他の項目はデフォルト) ・メニューのファイル→新規→動的ウェブプロジェクトを選択。 ・表示された画面でプロジェクト名を入力し完了ボタン押下(その他の項目はデフォルト) ・作成したプロジェクトを右クリック→新規→その他を選択。 ・表示された画面でweb→サーブレットを選択し「次へ」押下。パッケージ、クラス名を入力して「完了」ボタン押下。 ・作成されたクラスのdoGetメソッドを以下のように編集。 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>テストタイトル</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>テスト</h1>"); out.println("</body>"); out.println("</html>"); } ・クラス先頭のインポート文に「import java.io.PrintWriter;」を追記。 ・プロジェクトを右クリック→デバック→サーバーでデバックを選択。 ・表示される画面で「既存のサーバーを選択」を選択し「次へ」ボタン押下。 ・構成済みのリソースに作成したプロジェクトがあることを確認して「完了」ボタン押下。 結果「http://localhost:8080/testWeb/」に自動的にアクセスするが以下のようなメッセージが表示されてしまう。 ------------------------------------------------------------------------------ HTTPステータス 404 The requested resource () is not available. -------------------------------------------------------------------------------- ※eclipseからtomcatの起動と終了は正常にできているようです。 参考にしたURL  http://www.od.eng.kansai-u.ac.jp/docs/eclipse-tomcat-DynamicWebProject.pdf  http://www.db.is.kyushu-u.ac.jp/rinkou/tomcat/eclipsetomcat.html

    • ベストアンサー
    • Java
  • Eclipseのプロジェクトをシェルで実行する方法

    Eclipseで生成したプロジェクトを以下のコマンドでシェル実行したところ、以下のエラーが出ました。 /c/Apprication/pleiades-2020-06-java-win-64bit-jre_20200702/pleiades/workspace/home/ShellTest/shell_and_Java $ ./.do-java.sh 「エラー:メイン・クラスshell_and_Java.HelloWorldが見つからなかったかロードできませんでした。」 Eclipse上のフォルダ階層は以下となっています。 ■Eclipse上のプロジェクト ShellTest (プロジェクト名) →src  (フォルダ) →→shell_and_Java (パッケージ) →→→HelloWorld.java →bin →→shell_and_Java →→→HelloWorld.class (クラスファイル) →shell_and_Java (フォルダ) →→.do-java.sh (シェルスクリプト) ■do-java.shの内容 java shell_and_Java.HelloWorld ■HelloWorld.javaの内容 printlnで"HelloWorld"を表示する単純な処理です。 環境変数やクラスパスの設定など、それぞれ正しく設定できているのか、どの状態が正しいのか分からず困っています。。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Tomcatのアプリケーションの呼びでエラー404

    Tomcatのアプリケーションの呼びでエラー404となる ブラウザのURLに下記のコマンドを入力し、   http://localhost:8080/hello/index.html を入力すると下記のようにNGとなる。     何故NGとなるか教えてください。 ●コマンド: http://localhost:8080         メッセージ(OK): 一覧表示する。   ●コマンド: http://localhost:8080/hello/index.html ●メッセージ(NG): ype ステータスレポート メッセージ /hello/index.html ● 説明 The requested resource is not available. ●私の環境項目  Os windows 8.1    プログラム: java SE Development kit 8_ Tomcatバ-ジョン:tomcat6.0 ●Hello.xmlディレクトリ: C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\hello.xml ●Hello.xml の内容:   Context path="\hello" docBase="c:\servlet-sample\helloworld"/> ●Indexディレクトリ:  C:\servlet-sampl\helloworld\index.html ●Index.htmの内容: <html> <head><title>HelloWorld</title></head> <body> <br> <img src="./img/p1.png"> <a href="/hello/helloworld">クリックして下さい</a> <br> </body> </html> ●hellWorldディレクトリ:   C:\servlet-sampl\helloworld\WEB-INF\classes ●HellWord.java(class)の内容: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } }

  • eclipseで作ったサーブレットのサーバーへのアップロード方法について

    サーブレットのアップロードについて eclipse(バージョン: 3.1.1) Tomcat5.5 jre1.6.0_01 の環境で、下記のようなプロジェクトexamplesをeclipseで localhost上に作成しました。 これをwebサーバーにアップして、 (DocumentRoot "/usr/local/apache2/htdocs") 動作させたいのですが、 javaファイル、jarファイル、wec.xml等を DocumentRoot配下にどのようなディレクトリ構造を作って、 配置すれば動くのでしょうか。 サーバーは apache-2.2.0 Tomcat-4.1.31 であり、以前より正常に運用しているサーバです。 examples | |--JREシステムライブラリー[jre1.6.0_01] | |---(省略) |--TOMCAT_HOME/common/lib/servlet-api.jar | |---(省略) |--TOMCAT_HOME/common/lib/jasper-runtime.jar | |---(省略) |--TOMCAT_HOME/common/lib/jsp-api.jar | |---(省略) | |--WEB-INF/src | | | |--chap09_servlet02 | | | |--HelloServlet.java | |--WEB-INF | | | |--web.xml 【HelloServletWorld.java】 package chap09_servlet02; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServletWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setContentType("text/html; charset=Windows-31J"); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>Servlet</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<h1>"); out.println("<font color =\"blue\">"); out.println("Hello ServletWorld"); out.println("</font>"); out.println("</h1>"); out.println("</BODY>"); out.println("</HTML>"); out.close(); } } 【web.xml】 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HelloServletWorld</servlet-name> <servlet-class>chap09_servlet02.HelloServletWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServletWorld</servlet-name> <url-pattern>/HelloServletWorld</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java
  • eclipse、Tomcatの設定

    お世話になります。 以前JAVAで開発していたプロジェクトを久々に動かそうと 思、新たにEclipse3.2、Tomcat5.5の環境を構築し、 TomcatのWebappsにWarをデプロイし、起動したのですが、 ブラウザからhttp://localhost:8080/プロジェクト名/index.html にアクセスしても404エラー画面が出力されてしまいます。 index.javaにSystem.outでデバッグしたのですが、 eclipseのコンソール上は何も出力されていないため、 TomcatとStrutsの連携がうまくいってなようです。 以前の設定でTomcatのWeb.xmlとServer.xmlを記述したのですが 何故うまくいかないのかわかりません。 どなたかご存知の方がいましたら教えていただけないでしょうか?

  • サーブレットについて

    こんにちは。 サーブレットに質問したいことがあります。 以下のサンプルソースで、 response.setContentType("text/html;charset=Shift_JIS"); の部分があるのですが、このようにすると日本語が文字化けしてしまいます。 ちなみにresponse.setContentType("text/html); とすると、日本語も文字化けせずに正しく表示されます。 ここで質問なのですが、 サーブレットの場合はJSPと違い、charsetを指定しなくてもよろしいのでしょうか? 何か分かることがありましたらご教授御願い致します。 ---------☆サンプルソース(HelloWorldExample.java)☆---------------- import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>ハローワールド</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>HelloWorld ハローワールド</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } } ---------------------------------------------------

    • ベストアンサー
    • Java
  • eclipseが使えません

    はじめて質問させていただきます。よろしくお願いいたします。   最近Javaを始めようとしています。 ”JDK6 Update10”をダウンロード&インストールした後 PATHを通しコマンドプロンプトを使い "HelloWorld"のプログラムを実行したらちゃんとできたのですが 次に”eclipse ver3.4.1”をDLして"HelloWorld"のプログラムを実行しようとしたら ”エディターにはメイン型が含まれていません”というメッセージがでで、プログラムが動きませんでした。 ちなみに以下がプログラムの内容です。  public class test01 { public static void main (String args[]){ System.out.println("HelloWorld!"); }   何かしなくてはいけない設定などあるのでしょうか? インストール済みのJREというのは jdk1.6.0_10というものに設定しました。

  • eclipse,mysql,javaエラー

    Class.forName("com.mysql.jdbc.Driver")が接続出来ません どなたかお教え頂けないでしょうか MySQLを再インストールしてもだめです 下記環境で動かしています。 eclipse-3.72 MySQL5.5.13,JDBC:4.0.0 mysql-connector-java5.1.17-bin.jar jdk.1.6.0_26 eclipseで 接続プロファイルを作成し、mysql-connector-java5.1.17-bin.jarを設定して 接続デスト pingが正常に完了しましたで問題がありません。 またjavaのビルド・パスにもmysql-connector-java5.1.17-bin.jarが有りますが javaを実行すると下記状態になります Class.forName("com.mysql.jdbc.Driver")が接続出来ません 下記が実行ソースプログラム import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class test01 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>データベーステスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>"); Connection conn = null; String url = "jdbc:mysql://localhost/testdb"; String user = "root"; String password = "test"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); out.println("ドライバのロードに成功しました<br>"); conn = DriverManager.getConnection(url, user, password); out.println("データベース接続に成功しました<br>"); }catch (ClassNotFoundException e){ out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ out.println("Exception:" + e.getMessage()); }finally{ try{ if (conn != null){ conn.close(); out.println("データベース切断に成功しました"); }else{ out.println("コネクションがありません"); } }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } } out.println("</p>"); out.println("</body>"); out.println("</html>"); } }

    • ベストアンサー
    • Java

専門家に質問してみよう