2017-09-01 16 views
0

私はStrutsのthisチュートリアルに従っています。Struts 2 Hello Worldチュートリアル404

これは私のファイル構造である:

This is my file structure

私はステップですべてのステップを追ったと思った、私は以前同様のチュートリアルを行なったし、それは別のバージョンで動作するように取得することができたが、私はよ今Struts 2.3.33を試してみてください。私はこれをApache Tomcat 8.5サーバーで実行しています。私はhttp://localhost:8080/HelloWorldStruts2/index.jspに行きますが、404エラーメッセージが表示され、その理由がわかりません。私はStrutsファイルが私のビルドパスと私のデプロイメントアセンブリとWEB-INF/libフォルダの両方にあることを保証しました。

私は私のコンソールにはエラーが発生していない、これは私のweb.xmlファイルでいます:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 

    <display-name>Struts 2</display-name> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class> 
     org.apache.struts2.dispatcher.FilterDispatcher 
     </filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
</web-app> 

マイstruts.xmlは以下の通りです:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
<constant name="struts.devMode" value="true" /> 
    <package name="helloworld" extends="struts-default"> 

     <action name="hello" 
      class="com.tutorialspoint.struts2.HelloWorldAction" 
      method="execute"> 
      <result name="success">/HelloWorld.jsp</result> 
     </action> 
    </package> 
</struts> 
+0

このバージョンはjre 1.8では使用できません。 –

+0

@Roman C OPの環境(Struts 2.3.33およびTomcat 8.5)を使用してチュートリアルを実行しましたが、JRE 1.8を使用して私の仕事をしました。下記の私の更新された記事を見てください。 – skomisa

+0

OPの環境はどういう意味ですか?私がこのチュートリアルを読んでいる限り、Struts 2.2.3とJREのバージョンには何も関係していません。 –

答えて

0

私はあなたの環境とそのチュートリアルに従っ(Eclipse + Struts 2.3.33 + Tomcat 8.5.20)、Java 1.8を使用してWindows 10で動作しました。

あなたのような、私は、Struts 2.3.33を使用した場合、実行時にNoClassDefFoundErrorがを避けるために、コモンズ-lang3-3.2.jarにWEB-INF/libにを追加することによって、チュートリアルから逸脱しなければなりませんでした。

  • はまず、あなたはバージョン、それは=「3.0」バージョンでなければなりません=「2.5」を指定:しかし、私はあなたにもチュートリアルから外れのweb.xmlに2つの変更を行っ見ます。

  • 第二に、あなたはフィルタクラスためorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 代わりのorg.apache.struts2.dispatcher.FilterDispatcherを指定しました。

チュートリアルでは、彼らののweb.xmlを変更することなく、私のためにうまく働いていることを考えると、私はあなたの2つの変更を元に戻し、再試行してください示唆しています。

web.xmlファイルを変更するよう促したのは何ですか?

OK:以下OPさんのコメントに基づいて応答を更新しました


。私が気づいたチュートリアルのもう1つの逸脱は、タイル2を持つStruts2.3の名前をHelloWorldStruts2ではなくとしたことです。あなたのプロジェクトがHelloWorldStruts2について何かを知っているのであれば、私は疑問に思う。デフォルトでは

あなたのコンテキストルートは、ので、あなたのURLがhttp://localhost:8080/Struts2.3_with_Tiles_2/index.jspに変更する必要があり、Struts2.3_with_Tiles_2、ないHelloWorldStruts2になります。

あなたは、あなたのプロジェクト、右クリックを選択し、ポップアップメニューから[プロパティを選択し、次にのWebプロジェクトの設定を選択することで、プロジェクトのコンテキストルートを見ることができます。 Context Rootフィールドに表示されている内容は、URLに何を指定する必要があります。

だから、明確にする:

  • を正確には、プロジェクトのコンテキスト・ルートは何
  • 正確にはと指定していますか?

これで問題が解決しない場合は、もう一度チュートリアルを実行することをおすすめしますが、その指示に正確に従います(コピーする必要がある特定のStruts 2ファイルを除きますが、

+0

私が逸脱した理由は、サーバーを起動したときにチュートリアルを正確に実行した後に404メッセージが表示されたためです。私はこのチュートリアルを別のバージョンのStruts(2.5)で以前は使用していましたが、他のプラグインとの統合に問題があったので、このチュートリアルをバージョン2.3.33で再作成しようとしています。 404を取得した後、私は他のプロジェクトから自分のweb.xmlをコピーしようとしましたが、うまくいきませんでした。 web.xmlをチュートリアルに戻しましたが、まだ404エラーが表示されています。 – CS2020

+0

私はあなたが正しいと信じています、私は今家にいませんが、私はこれを持っているマシンに乗るときに試してみます。私はこのプロジェクトを作ったときに忘れてしまったばかげたエラーだと思っています。これを指摘してくれてありがとう、私は更新し、あなたの答えを受け入れてくれますか? – CS2020

+0

これは私の問題でした。このダムの間違いを理解するのを手伝ってくれてありがとう! – CS2020