【Java】EclipseでTomcatプロジェクトへのブラウザアクセスができない理由

このQ&Aのポイント
  • JavaのEclipseで作成したTomcatプロジェクトへブラウザからアクセスできません。Tomcatは正常に起動しており、Apache Tomcatへのアクセスも可能です。
  • EclipseでTomcatプロジェクトとして作成したmbshopプロジェクトにアクセスすると、HTTPステータス404エラーが表示されます。
  • mbshopプロジェクト配下にはWEB/INFディレクトリがあり、その中にweb.xmlがあります。
回答を見る
  • ベストアンサー

【Java】Eclipseで作成したTomcatプロジェクトへブラウザ

【Java】Eclipseで作成したTomcatプロジェクトへブラウザからアクセスできません。 Tomcatは問題なく起動していて、Apache Tomcatへはアクセスできます。 以下に詳細を記載していますのでアドバイスをお願いします。 環境は以下の通りです。 ・Windows XP ・Internet Explorer8.0 or Firefox ・Eclipse Platform 3.4.2 Ganymede (All in one) ・Tomcat6.0 ・jre1.6 EclipseでTomcatを起動でき、その際のコンソールにも特にエラーはありません。 Tomcatを起動した際に http://localhost:8080/ へアクセスすると、Apache Tomcatへ繋がります。 なので問題なくTomcatは起動しています。 EclipseでTomcatプロジェクトとして”mbshop”という名のプロジェクトを作成しました。 http://localhost:8080/mbshop/とアクセスするとHTTPステータス 404 - /mbshop/ と表示されてしまいます。 mbshop配下にWEB/INFがあり、その中にweb.xmlを記述しています。 web.xmlの記述内容は以下の通りです。 <?xml version="1.0" encoding="ISO-8859-1"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd" <servlet> <servlet-name>invoker</servlet-name> <servlet-class> org.apache.catalina.servlets.InvokerServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> </web-app> Tomcatが起動できApache Tomcatのサイトへアクセスできるのに、 Eclipse内のTomcatプロジェクトが表示できないのは、なぜでしょうか。 いくら調べても原因が見つかりません。 ご存知の方がいれば、アドバイスを下さい。 宜しくお願いします。

  • Java
  • 回答数3
  • ありがとう数16

質問者が選んだベストアンサー

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

Heliosに入れ替えても同じやり方ではうまく行かないと思います。 Eclipse Platform 3.4.2 Ganymede (All in one)だってWTP入ってますよ。 また、Tomcat6.0でもInvokerServletはありますから、 今回の問題には直接の関係は無いと思います。 試しにミニマム構成でプロジェクトの作成から実行までやってみましょう。 まず、右上のツールバーからJavaEEパースペクティブを選択します。 (ウィンドウ>パースペクティブを開く>その他>JavaEEでも可) 次にウインドウメニューからパースペクティブのリセットを選んでください。 IDEの下の方にサーバーというタブがあると思いますので、それを選択して下さい。 ここに、Tomcatが登録されていなかったら、 サーバーウィンドウを右クリックして新規>サーバーでTomcatを登録して下さい。 (ウィンドウ>設定>サーバー>ランタイム環境でも可) Tomcatプロジェクトではなく、動的Webプロジェクト(Dynamic Web Project)で、 プロジェクトを作成する。 WebContentの直下に、index.jsp等のファイルを作成する。 作成したindex.jspを右クリックして、実行>サーバーで実行を選ぶと、 どのサーバーで実行するか聞かれるので、実行するサーバーを選択してください。 次へで、実行するプロジェクトをサーバーに登録する画面が表示されるので、 先程作成した動的Webプロジェクトが構成プロジェクトに登録されている事を確認して、 完了を押してください。 Tomcatが起動されて、内蔵ブラウザでindex.jspが表示されるはずです。 (WebContentの中のファイルを選択した状態で実行したので、 自動的にURLを組み立ててくれている) 蛇足ですが、WTPでTomcatを起動した場合、http://localhost:8080/では404になると思います。

stellasia
質問者

お礼

今回ベストアンサーに選ばせて頂いた理由は、私の知識や技能が未熟であり、それに対して丁寧に説明を頂いた点をあげます。Lieserlさんのアドバイスは画面上の操作について非常に的確で丁寧な内容であったため、知識が足りなかった私にとってわかりやすかったです。 なので本音を言えば、今回アドバイスを頂いた皆様をベストアンサーとしたいくらいです。 Lieserlさん、的確なアドバイスをありがとうございました。 私が学んでいたプロジェクトの作成方法は非常に古いものであったことに気づきました。 Lieserlさんの説明いただいた内容の通りに操作をしたところ、すべてうまくいきました。 またこのような操作を知らなかった自分がお恥ずかしいです。 今回の教訓を大事にし、今後色々な視点からEclipseを勉強していきたいと思います。 非常に丁寧に教えていただき、ありがとうございました。

その他の回答 (2)

回答No.2

JavaEE6, Tomcat7に対応した Eclipse3.6 Helios が6月24日にリリースされたので、これを機に、Helios に乗り換えたらよいと思います。 www.eclipse.orgから、 Eclipse IDE for Java EE Developers をダウンロードすれば、それがWTP付きのEclipseです。 WTPを使って Dynamic Web Project を作成すれば、デフォルト値を変更しない限り、WebContent は自動的に作成されます。 それから WTP では、サーバという概念が従来と異なり、プロジェクト単位でサーバ情報が持たれるので、invoker Servlet などというものは、もはや存在価値を持ちません。 Eclipse の開発スピードはとても速いので、日本語で書かれたネット上の情報は、そのほとんどが現在では時代遅れのものになっています。 出来るだけ、英語で書かれた本家のドキュメントを参照するようにしないと、日本のプログラマは世界から置いてきぼりをくってしまいます。

stellasia
質問者

お礼

erichgunmaさん アドバイスを頂きありがとうございます。 新しいバージョンのEclipseも続々と出ていますね。 扱いに慣れてくれば使用を検討したいです。 英語を理解した上でJavaを取り組むことは非常に重要ですね。 私は根本的な基礎知識が不足していたようで、今後の課題は山積みですが 一つ目標が持てた気がします。 Javaをマスターし、外国人との共有も図れるよう立派なプログラマーを 目指していきたいです。非常に貴重な意見をありがとうございました。

回答No.1

WTPでは、tomcat の制御は WTP側で行います。 WTP側には tomcat/index.html は存在しないので、 http://localhost:8080/ にアクセスしても、404エラーになります。 逆に、tomcat を Eclipse の外から直接起動すると、 http://localhost:8080/ にはアクセスできるようになりますが、すでに8080ポートが使用されているため、WTP から tomcat へはアクセスできなくなります。 ポートを変えてやればアクセスできるようになりますが、tomcat の制御を tomcat側とWTP側と両方から行うことになりますので、おかしなことになります。 tomcat managerは、deploy後のアプリ&サーバを管理する事を想定しているものなので、開発マシン上でのTomcatの制御はWTPを通して行うのがよいです。

stellasia
質問者

お礼

erichgunmaさん とても丁寧に回答頂き、ありがとうございました。 非常に参考になりました。 私は今現在、Eclipseをdownloadした際に自動的に備え付けられていたTomcatを使用しています。 別の方より「WTPの場合はmbshop/WebContent/WEB-INFという具合に、TomcatプロジェクトであるmbshopとWEB-INFの間の階層にWebContentがある」という指摘を受けました。 ですが、私のEclipseを見てもWebContentという名称はありませんでした。 私が使用しているEclipseがWTPであるかどうかが一つ問題なのかもしれませんが WTPで使用するにはどのように設定すればよいでしょうか。 PASS・変数の設定も見直す必要などもありますでしょうか。

関連するQ&A

  • eclipseでTOMCATが起動しない

    eclipseにTOMCATのプラグインを導入し、eclipseからTOMCAT を起動できるようにしたい(というか、本にはできると書いてある) のですがうまくいきません。 2台のPCでやったのですが、どちらも同じようにだめです。 スタートメニューから、TOMCATを起動すれば起動してくれます。 http://localhost:8080 にて起動が確認できます。 TOMCATは4.1.31で、プラグインはcom.sysdeo.eclipse.tomcat_2.1.0です。 web.xmlはservlet-mappingのコメントアウトをはずしてます。 TOMCATホームは C:\Program Files\Apache Group\Tomcat 4.1 設定ファイルは C:\Program Files\Apache Group\Tomcat 4.1\conf\server.xml としています。 サーブレットを作成して、eclipseからTOMCATの起動ボタンを押すと、 なにやら起動画面が出てくることは出てくるのですが、 http://localhost:8080/Servlet などとしても、何も見つからないと出てしまいます。 ここで、スタートメニューからTOMCATを起動させ、ブラウザで↑にアクセスするとようやく 起動が確認できました。 何かが間違えているのでしょうか? 足りない情報は捕捉をお願いします。 よろしくお願いいたします

    • ベストアンサー
    • Java
  • Tomcatでサーブレットを動かそうとするとHTTP 404エラーにな

    Tomcatでサーブレットを動かそうとするとHTTP 404エラーになってしまいます。 使用環境は以下の通りです。 Tomcat 5.5.20 jdk 1.6.0_20 Eclipse pleiades-e3.5 Tomcatプロジェクト名entryを作成し、WEBINF-src以下に inputパッケージを、その中にHelloServlet.javaを作り、 web-xmlをentryの直下に作成しました。 取り敢えず動作確認をしたいのですが、404エラーになってしまいます。 Tomcatを再起動しても駄目でした。 どなたか助言を頂けると大変助かります。。 以下確認した事です。 ・http://localhost:8080/manager/htmlにて/entryのデプロイを確認済み。 ・textファイルを配置した時はhttp://localhost:8080/entry/hello.txt で動作確認済み。 ・web-xmlは動作確認がとれているものをコピペして必要な部分だけ書き直し、       何度か確認したのですが、記述中の←の所でスペルが正しくありませんと言われています。 <?xml ← version="1.0" encoding="Shift-JIS"?> <web-app ← xmlns ← ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-appp_2_4.xsd" version="2.4"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>input.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> </web-app> 情報が少なくて申し訳ないですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • Tomcat Servletが動きません

    『Javaへの道:Tomcat』のページを参考に同じようにやってるのですが、 JSPはうまくいくのですがServletがうまくいきません。 (長文になります) 参考ページと私の環境で違う点 Windows XP Home → XP Pro Tomcat 6 → Tomcat 7 JDK6.0 → JDK6.23 ポート8080 → 8081 以下のファイル、フォルダを作りました(参考ページそのままです)。 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\jspdir\HelloJsp.jsp C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\classes\HelloServlet.class C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\web.xml C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost\javaroad.xml --↓↓HelloJsp.jspここから↓↓-- <HTML> <BODY> from JSP source<br> <%= new java.util.Date() %> </BODY> </HTML> --↑↑HelloJsp.jspここまで↑↑-- --↓↓web.xmlここから↓↓-- <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app> --↑↑web.xmlここまで↑↑-- --↓↓javaroad.xmlここから↓↓-- <Context path="/javaroad" reloadable="false"/> --↑↑javaroad.xmlここまで↑↑-- JSPを起動 http://localhost:8081/javaroad/jspdir/HelloJsp.jsp → 正しく表示される Servletを起動 http://localhost:8081/javaroad/Hello → ステータス404 The requested resource (/javaroad/Hello) is not available. <気になる点> 1.Tomcatを起動するためStratボタン押しても1回では起動せず、2~3回で起動する。  1回目のときcommons-daemon.2011-01-15.logにこんなログが出る。  [2011-01-15 23:01:16] [error] Pid file 'C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\tomcat7.pid' exists  [2011-01-15 23:01:16] [error] ServiceStart returned 1 2.servletクラスは正しくコンパイルできているのか 状況を詳しく説明しようとして長々と書いてしましたが Servletを表示するにはどうしたらいいでしょう? 足りない情報があれば追加します。

    • ベストアンサー
    • Java
  • EclipseでTomcat

    Windows XP Eclipse 3.0.1 Tomcat 4.1 Eclipseでサーブレットをしようと思って Tomcatをインストールしたのですが、 Eclipseを起動しTomcatプロジェクトを作成せずに Tomcatを起動するとうまく起動するのですが Tomcatプロジェクトを起動すると以下のようなメッセージが出て起動できません。 解決法がわかる方いましたらお願いします。教えてください。 org.apache.commons.digester.Digester fatalError 致命的: Parse Fatal Error at line 1 column 87: Invalid byte 1 of 1-byte UTF-8 sequence. org.xml.sax.SAXParseException: Invalid byte 1 of 1-byte UTF-8 sequence. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source) 以下略

    • ベストアンサー
    • Java
  • Tomcatにおけるサーブレットの呼び出し

    tomcatに関してですが、現在サーブレットからjspを呼び出すようなことをしたいと思い、web.xmlを以下のように設定し、”http:localhost:8080/servlet/Login”としても『HTTP Status 404 - 』が返却されます。jspからサーブレットを呼び出すことはできるのですが・・・(この場合、jspファイルをWEB-INFの直下にディレクトリを作成するとやはりアクセスができませんでした。WEB-INFと同レベルに置けばアクセスは可能でした。)。 どなたかわかる方がいれば教えて下さい! よろしくお願いします。 --------------- 環境 --------------- Windows2000Server eclipse ver2.1.1 tomcat ver4.1 --------------- ディレクトリ構成 --------------- WEB-INF Lclasses | LLogin_serv.java Ljsp LLogin.jsp --------------- web.xml --------------- <?xml version="1.0" encoding="shift_jis"?> <!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>Login</servlet-name> <servlet-class>serv.Login_serv</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet> <url-pattern>Login</url-pattern> </servlet-mapping> </web-app> 補足:tomcat-confにあるweb.xmlの『invoker』はコメントを外し有効にしてます。

    • ベストアンサー
    • Java
  • tomcatでサーブレットが呼び出せません

    最近javaを始めたものなのですがさっそく躓いています http://www.javadrive.jp/servlet/schedule/現在、上記のサイトを参考にしてTomcat6.0を使ってスケジューラを作ろうと思っています 始めたてなのでアレンジなどはパスなどを自分に合わせるなど以外には行っていません にもかかわらず現在第2段階のカレンダーの表示の中にあるサーブレットの呼び出しができません スケジュール管理の画面とサーブレットのリンクまでは出せるのですが、いざサーブレットのリンク先へ行くとHTTP404のエラーとなってしまいます 問題になると思われるweb.xmlはWEB-INFの直下に置いているのですが何が間違っているのかが全くわからない状態です 一応これがweb.xmlの中身となっています web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>MonthView</servlet-name> <servlet-class>MonthView1</servlet-class> </servlet> <servlet-mapping> <servlet-name>MonthView</servlet-name> <url-pattern>/MonthView</url-pattern> </servlet-mapping> </web-app> 他にどういう情報を出せばいいのかわからないため 他に開示してほしい情報があればどんどん聞いてください どうか皆さんの知恵をかしてください

  • TomcatとEclipseのweb.xml[]について

    TomcatとEclipseのweb.xmlの<context-param>の設定について お聞きいたします。 windowsXP上にTomcatとEclipseをインストールし ${CATALINA.HOME}\confの直下にあるweb.xmlと Eclipseで作成したWEB-INF直下のweb.xmlの 両者に <context-param> <param-name>hoge</param-name> <param-value>foo</param-value> </context-param> と記述があり jspから application.getInitParameter("hoge"); またはHttpServletの子クラスから getServletContext().getInitParameter("hoge"); と呼びに言った場合どちらの設定が優先され また、その優先順位の記述(設定)はどこで 行うのでしょうか? ちなみにlogging.propertiesなどの設定も どちらが優先されるのか気になります。 尚、環境は Tomcat5.5 Eclipse3.2 です。 どうかご教授お願い致します。

    • ベストアンサー
    • Java
  • Tomcat起動時にエラーが発生します。

    2つのプロジェクトをEclipseで作成しています。 Tomcat4.1をEclipseから起動させていますが、起動時に以下のようなエラーが表示されます。 このエラーに関して解決策がわかる方がいたらご教授いただきたいです。 サービス Tomcat-Standalone を起動します Apache Tomcat/4.1.18 2006/05/26 16:28:33 org.apache.commons.digester.Digester error 致命的: Parse Error at line 97 column 13: The content of element type "servlet" must match "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)". org.xml.sax.SAXParseException: The content of element type "servlet" must match "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)". at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:232)                  :                  : web.xmlの<servlet>タグの記述方法に間違いがある・・・というような、エラーメッセージに見えるのですが、 同じプロジェクトを他のマシンに入れて、Tomcatを起動しても、このエラーメッセージがでない・・・という状況です。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • tomcatのweb.xmlについて

    tomcatのweb.xmlについての質問です。 eclipseにサーバーからソースをインポートしてプロジェクトを作成しました。 ビルドパス等の問題は解決したのですが、web.xmlの以下に示す箇所だけどうしてもエラーが解消出来ません。 色々調べてみた結果、要素の順番が悪いのだろうとは理解出来ましたが、順番を変えてもエラーが出続けます。 どこがいけないのでしょうか? web.xmlの記述 <servlet> <init-param> <param-name>browseDirs</param-name> <param-value>false</param-value></init-param> <servlet-name>FileServlet</servlet-name> <servlet-class>jrun.servlet.file.FileServlet</servlet-class> <description>This servlet may override a corresponding FileServlet in SERVER-INF/default-web.xml.If removed, the servlet in default-web.xml will be used.</description> </servlet> エラー内容 要素タイプ "servlet" のコンテンツは "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)" と一致しなければなりません。 お詳しい方、何卒ご教示の程願います。

  • 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を記述したのですが 何故うまくいかないのかわかりません。 どなたかご存知の方がいましたら教えていただけないでしょうか?

専門家に質問してみよう