- ベストアンサー
Strutsのエラー?それともサーブレット?
- Windows2000 j2sdk-1_4_1_07-windows-i586 jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49 struts-1.2.7を使用して、SendMessageForm.javaとSendMessageAction.javaをコンパイルしましたが、エラーメッセージが表示されます。どのように解決すればいいでしょうか?
- struts-config.xmlとApplicationResources.propertiesを編集しましたが、http://localhost:8080/javahello/sendMessage.jspを開くとメッセージが見つかりませんのエラーメッセージが表示されます。コンパイルエラーか設定エラーか、どちらが原因でしょうか?
- 初心者ですが、Strutsの設定やコンパイルエラーの対処方法についてご教授いただけませんか?前に進むことができず困っています。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
メッセージリソースの記録されているファイルにどれを使うかは web.xml で指定します。 ActionServlet の application という初期化パラメータで指定しているやつがそれです。 「サーブレットの初期化パラメータ」がわからなければサーブレットの基本を勉強しましょう。 スタックトレースの1行にはそれぞれクラス名、メソッド名、行番号が表示されています。どのような順序でメソッド呼出がおこなわれているかがわかりますので例外がどこで発生しているのかを突き止めることが出来ます。行番号がわかれば Apache から Struts のソースコードをダウンロードしてソースコードを見るわけです。 まずは例外を発生させる簡単なプログラムを作って読み方を勉強してみましょう。 わからないようでしたら焦点を明確にするため新しい質問として書き込んでみてはいかがでしょうか。
その他の回答 (5)
- yusukey
- ベストアンサー率56% (17/30)
当初の問題は解決したということでしょうか? いずれにせよ当初の問題とは独立した現象ではないかと思われます。 焦点を明確にするためにも別の質問として新しく投げてはいかがでしょうか。 参考になるかわかりませんがリアルタイムで似た問い合わせが進行しているようです。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24029&forum=12&8
お礼
yusukey様 ご回答ありがとうございました。 教えていただいた問合せに私も参加してみたいと思います。 たくさんのご指摘本当にありがとうございました。
- yusukey
- ベストアンサー率56% (17/30)
今回の現象はJDKやTomcatのバージョンとは関係なく独立した問題でしょう。 Strutsがどういったサーブレットコンテナを必要とするかは以下のドキュメントに記載されています。 http://struts.apache.org/userGuide/installation.html JDK のアップグレードを勧めたのは今回の問題とは直接関係ありませません。サポートが終了しているソフトはどのような場合にも利用はオススメしません。
補足
yusukey様 ご回答ありがとうございます。 Strutsの起動時に 致命的: null : Can't find file '/WEB-INF/tiles-defs.xml' 2005/08/31 11:07:14 org.apache.struts.tiles.TilesPlugin initDefinitionsFactory となっていることがわかりましたのでここから解決していきたいと思います。 しかし、ファイルが見つかりません。といわれているのに、 '/WEB-INF/tiles-defs.xml' は存在しています。 なぜ見つかりませんなどというエラーがかえってくるのでしょうか? 申し訳ありませんが、無知な私に教えていただけたら幸いです。
- yusukey
- ベストアンサー率56% (17/30)
>ちなみにTomcatのバージョンとStrutsのバージョンは今使っているもので問題はないのでしょうか? Tomcatのバージョンは書いてないのでちょっとわかりません。 可能であればもちろん最新バージョンを適用しておくのば無難でしょう。 Struts は1.2.7は最新バージョンのようですね。 気になるのはJDKのバージョンです。1.4.1はすでにリタイヤしていてサポートされていません。 http://java.sun.com/products/archive/j2se-eol.html 1.4.2か5.0にアップグレードすることをオススメします。
補足
yusukey様 ご回答ありがとうございます。 >Tomcatのバージョンは書いてないのでちょっとわかりません Tomcatは 4.1を使用しています。 Tomcat4.1とStruts1.2で開発しても問題はないのでしょうか? >1.4.2か5.0にアップグレードすることをオススメします。 このことがStrutsに影響しているのでしょうか? ためしにアップグレードしてみます。
- yusukey
- ベストアンサー率56% (17/30)
推奨されないうんぬんについては表示されているとおり、-deprecation オプションを指定してコンパイルすればどこを警告しているのか示してくれます。 メッセージが見つからない件については・・・なんでしょうね? ・見ているファイルが違っている(実行環境に正しくコピーされていない) ・前の行末に \(バックスラッシュまたは円マーク) が入っており行の先頭と認識されていない といったところでしょうか? 最後の手段になりますが、スタックトレースから例外を発生している箇所を判断してソースコードを見るという手もあります。せっかくのオープンソース製品ですからね。
補足
yusukey様 アドバイスどうもありがとうございます。 >・前の行末に \(バックスラッシュまたは円マーク) が入っており行の先頭と認識されていない の件に関しましては問題はなさそうです。 >・見ているファイルが違っている(実行環境に正しくコピーされていない) につきまして気になっているのですが、 http://www.hellohiro.com/struts.htm ではメッセージリソースファイル(ApplicationResources.properties)の編集 とありますが、ApplicationResources.propertiesが存在しなかったため作成しました。 MessageResources.propertiesというのはあったのですが・・・。 もう一つ気になっているのが、 (struts-config.xml)の編集 です。 追加という部分を追加しただけなのですが、私が編集したstruts-config.xmlには他の情報?もあります。 そこが影響しているのでしょうか・・・? 質問なのですが、 >スタックトレースから例外を発生している箇所を判断してソースコードを見るという手 というのはどのように行うのでしょうか? お手数をおかけいたしますが、ご教授のほどよろしくお願いいたします。
- yusukey
- ベストアンサー率56% (17/30)
ご指摘のコンパイル時のメッセージと、実行時の例外は無関係です。 コンパイル時の警告につきまして詳細はわかりませんが、実行時の例外はメッセージにあるとおり、特定のメッセージが存在しないことによるものです。 ApplicationResources.properties に sendMessage.title のキーのメッセージがあるかどうか確認してみましょう。 つまり、 sendMessage.title= で始まる行があるかどうかです。
補足
yusukey様 早速の回答ありがとうございます。 >ApplicationResources.properties に sendMessage.title のキーのメッセージがあるかどうか確認してみましょう。 との指摘で確認したところ 「sendMessage.title=Struts\u3067Hello World」 と始まっています。 ちなみにコンパイルエラーで SendMessageForm.java:44: 警告: org.apache.struts.action の org.apache.struts.act ion.ActionError は推奨されません。 errors.add("name" , new ActionError("error.name.required")); とあったので、ActionErrorをActionMessageに変更してみました。 警告メッセージは消えたのですが、やはりHTTP Status 500 -・・・ と同じエラーがかえってきます。 どこに原因があるのでしょうか? 教えてください。よろしくお願いいたします。
補足
yusukey様 アドバイスありがとうございました。 さっそく例外突き止める方法を勉強してみたいと思います。 ちなみにTomcatのバージョンとStrutsのバージョンは今使っているもので問題はないのでしょうか?