dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
またまた質問させてください。
・Windows2000
・j2sdk-1_4_1_07-windows-i586
・jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49
・struts-1.2.7

http://www.hellohiro.com/struts.htm
を参考に勉強中です。

それぞれファイルを作成し、環境変数を設定して
SendMessageForm.java と SendMessageAction.java
をコンパイルしましたが、

注: .\javahello\SendMessageForm.java は推奨されない API を使用またはオーバーライドしています。
注: 詳細については、-deprecation オプションを指定して再コンパイルしてください。

と出てきますが、クラスファイルはできています。
このエラーが出てきてもそのまま使えるとの情報があったので、とりあえず先に進み

・struts-config.xml)の編集
・(ApplicationResources.properties)の編集 及び ASCIIファイルに変換
の作業を行いました。

しかし、http://localhost:8080/javahello/sendMessage.jsp
を開くと

javax.servlet.ServletException: キー "sendMessage.title" に対応するメッセージが見つかりません
              ・
              ・
              ・
javax.servlet.jsp.JspException: キー "sendMessage.title" に対応するメッセージが見つかりません
              ・
              ・
              ・
とHTTP Status 500 - がかえってきます。

・コンパイルをきちんと通せてないのがいけないのでしょうか?
それとも
・Strutsの設定がよくないのでしょうか?

初歩的な質問なのでしょうが、どうしても前に進むことができずに困っています。
どなたがご教授のほどお願いいたします。

A 回答 (6件)

メッセージリソースの記録されているファイルにどれを使うかは web.xml で指定します。


ActionServlet の application という初期化パラメータで指定しているやつがそれです。
「サーブレットの初期化パラメータ」がわからなければサーブレットの基本を勉強しましょう。

スタックトレースの1行にはそれぞれクラス名、メソッド名、行番号が表示されています。どのような順序でメソッド呼出がおこなわれているかがわかりますので例外がどこで発生しているのかを突き止めることが出来ます。行番号がわかれば Apache から Struts のソースコードをダウンロードしてソースコードを見るわけです。
まずは例外を発生させる簡単なプログラムを作って読み方を勉強してみましょう。
わからないようでしたら焦点を明確にするため新しい質問として書き込んでみてはいかがでしょうか。

この回答への補足

yusukey様 アドバイスありがとうございました。
さっそく例外突き止める方法を勉強してみたいと思います。

ちなみにTomcatのバージョンとStrutsのバージョンは今使っているもので問題はないのでしょうか?

補足日時:2005/08/31 08:53
    • good
    • 0

当初の問題は解決したということでしょうか?


いずれにせよ当初の問題とは独立した現象ではないかと思われます。
焦点を明確にするためにも別の質問として新しく投げてはいかがでしょうか。
参考になるかわかりませんがリアルタイムで似た問い合わせが進行しているようです。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
    • good
    • 0
この回答へのお礼

yusukey様 ご回答ありがとうございました。

教えていただいた問合せに私も参加してみたいと思います。
たくさんのご指摘本当にありがとうございました。

お礼日時:2005/08/31 11:48

今回の現象はJDKやTomcatのバージョンとは関係なく独立した問題でしょう。


Strutsがどういったサーブレットコンテナを必要とするかは以下のドキュメントに記載されています。
http://struts.apache.org/userGuide/installation. …

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'
は存在しています。
なぜ見つかりませんなどというエラーがかえってくるのでしょうか?

申し訳ありませんが、無知な私に教えていただけたら幸いです。

補足日時:2005/08/31 10:50
    • good
    • 0

>ちなみに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に影響しているのでしょうか?
ためしにアップグレードしてみます。

補足日時:2005/08/31 10:18
    • good
    • 0

推奨されないうんぬんについては表示されているとおり、-deprecation オプションを指定してコンパイルすればどこを警告しているのか示してくれます。



メッセージが見つからない件については・・・なんでしょうね?
・見ているファイルが違っている(実行環境に正しくコピーされていない)
・前の行末に \(バックスラッシュまたは円マーク) が入っており行の先頭と認識されていない
といったところでしょうか?

最後の手段になりますが、スタックトレースから例外を発生している箇所を判断してソースコードを見るという手もあります。せっかくのオープンソース製品ですからね。

この回答への補足

yusukey様 アドバイスどうもありがとうございます。

>・前の行末に \(バックスラッシュまたは円マーク) が入っており行の先頭と認識されていない
の件に関しましては問題はなさそうです。

>・見ているファイルが違っている(実行環境に正しくコピーされていない)
につきまして気になっているのですが、
http://www.hellohiro.com/struts.htm
ではメッセージリソースファイル(ApplicationResources.properties)の編集
とありますが、ApplicationResources.propertiesが存在しなかったため作成しました。
MessageResources.propertiesというのはあったのですが・・・。

もう一つ気になっているのが、
(struts-config.xml)の編集
です。
追加という部分を追加しただけなのですが、私が編集したstruts-config.xmlには他の情報?もあります。
そこが影響しているのでしょうか・・・?

質問なのですが、
>スタックトレースから例外を発生している箇所を判断してソースコードを見るという手
というのはどのように行うのでしょうか?

お手数をおかけいたしますが、ご教授のほどよろしくお願いいたします。

補足日時:2005/08/29 14:14
    • good
    • 0

ご指摘のコンパイル時のメッセージと、実行時の例外は無関係です。


コンパイル時の警告につきまして詳細はわかりませんが、実行時の例外はメッセージにあるとおり、特定のメッセージが存在しないことによるものです。
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 -・・・
と同じエラーがかえってきます。

どこに原因があるのでしょうか?
教えてください。よろしくお願いいたします。

補足日時:2005/08/29 13:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!