締切済み

struts2環境構築で不具合が出てしまっています

  • 困ってます
  • 質問No.7873045
  • 閲覧数11074
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

以下のサイトを参考に環境構築を行い、
サンプルプログラムを実行しようとしています。、
http://www.atmarkit.co.jp/fjava/special/struts2/struts2_3.html
(サンプルファイルは3pで落とすことができます。)

実行しようとすると下記エラーが出てしまい、解決ができない状況です。
-------------------------------------------------------------------------------
WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Test20130103' did not find a matching property.
1 03, 2013 5:38:36 午前 org.apache.catalina.core.StandardContext filterStart
SEVERE: フィルタ struts2 の起動中の例外です
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:257)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:383)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:104)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

1 03, 2013 5:38:36 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
1 03, 2013 5:38:36 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: 以前のエラーのためにコンテキストの起動が失敗しました [/Test20130103]
---------------------------------------------------------------------------------

java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
とあるため、
必要なjarファイルがライブラリに追加されていないだけだと最初は思っていたのですが、
追加してもうまく実行されないためどうも違うようです。
下記jarファイルを現在インストールしています。

commons-io-2.0.1.jar
commons-fileupload-1.2.2.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-codebehind-plugin-2.3.8.jar
struts2-convention-plugin-2.3.8.jar
struts2-core-2.3.8.jar

使用している開発環境eclipseはver4.2.1になります。

何かアドバイスをいただけたらと思います。
よろしくお願いいたします。

回答 (全1件)

  • 回答No.1

ベストアンサー率 100% (1/1)

お疲れさまです。

参照された記事はやや古いバージョンのStruts2のようですね(・ω・`
サンプルプログラムはEclipseのWTPプラグインを利用して作成した"動的Webプロジェクト"のようですので、WEB-INF/libに、お使いのjarファイルを入れていれば動作環境は整います。

ただし、最新の2.3.8を使うとなると、サンプルコードに修正が必要です。

◆フィルタを変更します。
サンプルにある org.apache.struts2.dispatcher.FilterDispatcherは現在、非推奨です。
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterをお使いください。

◆Actionクラス
@Results、@Resultアノテーションは、Struts2.1よりConventionプラグインへ移行しましたので、インポートするパッケージが異なります。

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

◇Result指定
@Resultで指定する属性も変更になりました。

@Result(name = "hello1", location = "index.jsp")

このように、locationを使います。
また、type属性も、クラス名.classではなくなり、文字列(エイリアス)で指定します。

@Result(name = "hello2", location = "jump.jsp", type = "redirect"),
@Result(name = "recipe", location = "jump!recipe", type = "redirectAction"),

@Resultにつけるtype属性については、公式サイトの下記をご覧ください。
http://struts.apache.org/2.x/docs/result-types.html

他にもjumpActionクラス:@Resultは@Results{}の中になければコンパイルエラーです。
index.jspの1行目:pageEncodingの左に半角スペースがありませんので追加します。

これでひとまず画面が出る所まではできるかと存じます。

以上です。
補足コメント
hibiballa7

お礼率 100% (1/1)

お早いご回答とご丁寧な説明感謝致します。

修正して実行してみたところ下記エラーが出ました。
既に操作[ビルドパスの構成]→[外部jarの追加]で xwork-core-2.3.8.jar は入れています。
どうしても解決できないためこちらも見てもらってよろしいでしょうか。

また、お手数かけますがもうひとつ質問があります。
上記の操作のようにjarを追加すると'Java Resources'配下の'ライブラリー'にjarが追加されていきます。
今回、A-pZ様のおっしゃるように'WEB-INF'配下の'lib'にも同じjarを追加しましたが、
双方何が違うのでしょうか。
どちらか一方にjarは追加すれば良いといったようなものではないのでしょうか。

以上、よろしくお願いいたします。

以下エラー一覧
--------------------------------------------------------------------------------------------------------------------------------------
1 04, 2013 1:25:59 午前 org.apache.catalina.core.StandardContext filterStart
SEVERE: フィルタ struts2 の起動中の例外です
java.lang.NoClassDefFoundError: com/opensymphony/xwork2/config/ContainerProvider
at org.apache.struts2.dispatcher.ng.InitOperations.createDispatcher(InitOperations.java:110)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:73)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:278)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:259)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:383)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:104)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.config.ContainerProvider
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 21 more

1 04, 2013 1:25:59 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
1 04, 2013 1:25:59 午前 org.apache.catalina.core.StandardContext startInternal
SEVERE: 以前のエラーのためにコンテキストの起動が失敗しました [/Test20130103]
投稿日時 - 2013-01-04 01:38:38
お礼コメント
hibiballa7

お礼率 100% (1/1)

あのあと少し作業してみると'lib'フォルダへ
必要であるjarの追加が抜け漏れていたことがわかりました。
実行したところ、おかげさまで画面が表示されました。
画面が表示されましたが今のところボタンをクリックしてもほかのjspへ
ジャンプできない状態です。
もう少し作業してみてどうしてもダメなようであれば
また質問を行おうと思います。
ご協力くださりありがとうございました。
投稿日時 - 2013-01-04 03:18:13
Be MORE 7・12 OK-チップでイイコトはじまる
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ