Strutsのエラー?それともサーブレット?

このQ&Aのポイント
  • 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の設定やコンパイルエラーの対処方法についてご教授いただけませんか?前に進むことができず困っています。
回答を見る
  • ベストアンサー

Strutsのエラー?それともサーブレット?

いつもお世話になっております。 またまた質問させてください。 ・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の設定がよくないのでしょうか? 初歩的な質問なのでしょうが、どうしても前に進むことができずに困っています。 どなたがご教授のほどお願いいたします。

  • Java
  • 回答数6
  • ありがとう数4

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

  • ベストアンサー
  • yusukey
  • ベストアンサー率56% (17/30)
回答No.3

メッセージリソースの記録されているファイルにどれを使うかは web.xml で指定します。 ActionServlet の application という初期化パラメータで指定しているやつがそれです。 「サーブレットの初期化パラメータ」がわからなければサーブレットの基本を勉強しましょう。 スタックトレースの1行にはそれぞれクラス名、メソッド名、行番号が表示されています。どのような順序でメソッド呼出がおこなわれているかがわかりますので例外がどこで発生しているのかを突き止めることが出来ます。行番号がわかれば Apache から Struts のソースコードをダウンロードしてソースコードを見るわけです。 まずは例外を発生させる簡単なプログラムを作って読み方を勉強してみましょう。 わからないようでしたら焦点を明確にするため新しい質問として書き込んでみてはいかがでしょうか。

miammi
質問者

補足

yusukey様 アドバイスありがとうございました。 さっそく例外突き止める方法を勉強してみたいと思います。 ちなみにTomcatのバージョンとStrutsのバージョンは今使っているもので問題はないのでしょうか?

その他の回答 (5)

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.6

当初の問題は解決したということでしょうか? いずれにせよ当初の問題とは独立した現象ではないかと思われます。 焦点を明確にするためにも別の質問として新しく投げてはいかがでしょうか。 参考になるかわかりませんがリアルタイムで似た問い合わせが進行しているようです。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24029&forum=12&8

miammi
質問者

お礼

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

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.5

今回の現象はJDKやTomcatのバージョンとは関係なく独立した問題でしょう。 Strutsがどういったサーブレットコンテナを必要とするかは以下のドキュメントに記載されています。 http://struts.apache.org/userGuide/installation.html JDK のアップグレードを勧めたのは今回の問題とは直接関係ありませません。サポートが終了しているソフトはどのような場合にも利用はオススメしません。

miammi
質問者

補足

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)
回答No.4

>ちなみに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にアップグレードすることをオススメします。

miammi
質問者

補足

yusukey様 ご回答ありがとうございます。 >Tomcatのバージョンは書いてないのでちょっとわかりません Tomcatは 4.1を使用しています。 Tomcat4.1とStruts1.2で開発しても問題はないのでしょうか? >1.4.2か5.0にアップグレードすることをオススメします。 このことがStrutsに影響しているのでしょうか? ためしにアップグレードしてみます。

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.2

推奨されないうんぬんについては表示されているとおり、-deprecation オプションを指定してコンパイルすればどこを警告しているのか示してくれます。 メッセージが見つからない件については・・・なんでしょうね? ・見ているファイルが違っている(実行環境に正しくコピーされていない) ・前の行末に \(バックスラッシュまたは円マーク) が入っており行の先頭と認識されていない といったところでしょうか? 最後の手段になりますが、スタックトレースから例外を発生している箇所を判断してソースコードを見るという手もあります。せっかくのオープンソース製品ですからね。

miammi
質問者

補足

yusukey様 アドバイスどうもありがとうございます。 >・前の行末に \(バックスラッシュまたは円マーク) が入っており行の先頭と認識されていない の件に関しましては問題はなさそうです。 >・見ているファイルが違っている(実行環境に正しくコピーされていない) につきまして気になっているのですが、 http://www.hellohiro.com/struts.htm ではメッセージリソースファイル(ApplicationResources.properties)の編集 とありますが、ApplicationResources.propertiesが存在しなかったため作成しました。 MessageResources.propertiesというのはあったのですが・・・。 もう一つ気になっているのが、 (struts-config.xml)の編集 です。 追加という部分を追加しただけなのですが、私が編集したstruts-config.xmlには他の情報?もあります。 そこが影響しているのでしょうか・・・? 質問なのですが、 >スタックトレースから例外を発生している箇所を判断してソースコードを見るという手 というのはどのように行うのでしょうか? お手数をおかけいたしますが、ご教授のほどよろしくお願いいたします。

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.1

ご指摘のコンパイル時のメッセージと、実行時の例外は無関係です。 コンパイル時の警告につきまして詳細はわかりませんが、実行時の例外はメッセージにあるとおり、特定のメッセージが存在しないことによるものです。 ApplicationResources.properties に sendMessage.title のキーのメッセージがあるかどうか確認してみましょう。 つまり、 sendMessage.title= で始まる行があるかどうかです。

miammi
質問者

補足

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 -・・・ と同じエラーがかえってきます。 どこに原因があるのでしょうか? 教えてください。よろしくお願いいたします。

関連するQ&A

  • Strutsの設定エラーについて

    現在、Java開発環境及びStrutsフレームワークの設定を行なっていたのですが、動作確認用のJSPを実行すると以下のエラーが表示されてしまいます。 HTTPステータス500- << 説明 >> The server encountered an internal error () that prevented it from fulfilling this request. << 原因1 >> javax.servlet.ServletException: アクション /BeginAction に対応するマッピングが見つかりません org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.input_jsp._jspService(input_jsp.java:75)  <--- 略 ---> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122) ※もうひとつ同様の原因が表示されていますが、長文となるため省略しています。 今回、Strutsを設定するにあたり、以下のページを真似て設定しました。 http://www.atmarkit.co.jp/fjava/rensai3/struts01/struts01_2.html また動作確認用のJSPは次に示すURLの"input.jsp"を使用させて頂いています。 http://www.atmarkit.co.jp/fjava/rensai3/struts02/struts02_1.html ※現在は、Strutsを使用しないJSPは正常に実行されます。 動作環境は、 OS:WindowsXP pro sp2 Tomcat:5.5.17 Java:J2SDK1.4.2_12 Stuts:1.3.5 です。 原因/対応策のご教授をお願い致します。

  • サーブレットのコンパイルエラー

    会社の開発環境でコンパイルできたサーブレットを 自宅でコンパイルしようとすると、下のエラーが出てしまい困っています。だれか知恵を貸してください。 ちなみに自宅の開発環境は j2sdk1.4.0とtomcat3.2.3 です。 よろしくお願いします。 ----------------------------------- ReserveControlServlet.java:26: シンボルを解釈処理できません。 シンボル: メソッド setCharacterEncoding (java.lang.String) 位置 : javax.servlet.http.HttpServletRequest の インタフェース request.setCharacterEncoding("JISAutoDetect"); ^ ReserveControlServlet.java:33: シンボルを解釈処理できません。 シンボル: メソッド getRequestDispacher (java.lang.String) 位置 : javax.servlet.ServletContext の インタフェース sc.getRequestDispacher("/index.jsp").forward(request, response); ------------------------------------

    • ベストアンサー
    • Java
  • JSPからサーブレットを呼び出す際に404エラー

    現在、tomcatとeclipseでサーブレット/JSPの勉強をしています。 参考書に載っている、jspの入力画面で入力した値をサーブレットで受け取り、そのまま表示させるようなサンプルを作成しています。 JSPの入力画面は表示できるのですが、値を入力してサーブレットに移動する際、404エラーが出てしまいます。 ■eclipseのパッケージエクスプローラー basic |-WEB=INF/src |..|input |...|EchoServlet.java |-WEB-INF |..|web.xml |.|echo.jsp (WEB-INF直下に作成) ■echo.jsp内のサーブレットのパスに関する記述 <FORM ACTION="/servlet/EchoServlet"> ■web.xmlの記述 <servlet> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/servlet/EchoServlet</url-pattern> </servlet-mapping> ■EchoServlet.javaの記述 package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EchoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("message=" + msg); } } お気づきの点がございましたらご査収の程よろしくお願いいたします。

  • サーブレットについて

    WIN2000 j2sdk1.4.1_06 Tomcat 4.1.24です。 よろしくお願いします。 困っているのは、はサーブレットが動かないということです。 コンパイルすると C:\j2sdk1.4.1_06\bin>javac Hello.java パッケージ javax.servlet は存在しません。 import javax.servlet.*; というエラーになります。 j2sdkとトムキャットをインストールし、 PATH等の設定も行い Tomcatの起動も行なってからやっているのですが、 JSPはちゃんと表示してくれるのですが、 サーブレットだけ動きません。 APIを見ると確かに標準のものには載っておらず サーブレットの方に載っているようなのですが、 何か他に設定もしくは、インストールする必要が あるのでしょうか?

    • ベストアンサー
    • Java
  • struts使用時のソースの位置

    お世話になります。 他で似た質問をしているのですが strutsのソースの格納場所について質問します。 WTP+strutsを使用し画面を作成しているのですが以下のような質問がでました。 致命的: サーブレット jsp のServlet.service()が例外を投げました javax.servlet.jsp.JspException: ActionMappingsまたはActionFormBeansコレクションが見つかりません おそらくstruts.config.xmlフォルダでactionタグに関連した箇所を探しているけれど見つからない・ソースのある箇所がわからない、といってるようには思うのですが。 情報: サーブレット action を利用不可能にマークします 2007/10/11 17:06:04 org.apache.catalina.core.StandardContext loadOnStartup 致命的: サーブレット /struts-blank がload()例外を投げました javax.servlet.UnavailableException: パス /WEB-INF/struts-config.xml に対するリソース読み込みエラー ソースの構成は struts-blank プロジェクト名 配下に Deployment Descriptor Java Resources build -class 実際javaソースをビルド時ここにclassが作成される WebContent 配下に METE-INF pages ここにすでにWelcome.jspソースが作成されている WEB-INF 配下に lib ここにjarファイルがある src 配下にjava ここにMessageResources.properties build.xml README.txt struts-config.xml tldファイル tiles.def.xml validation.xml validator-rules.xml Web.xml index.jsp すでに作成されている という構成なのですがどこが問題なのでしょうか? 実際には WEB-INF/src/配下にフォルダを作りそこにjavaソースを入れている感じなのですが よろしくお願いします

    • ベストアンサー
    • Java
  • サーブレットの実行について

    はじめまして。迷い猫です。 Javaを始めて、まだ2週間の初心者です。 これから、Javaを使って開発をしていこうと猛勉強中です。 DBを使った処理で、コンパイルは通るのですが、実行をするとエラーが出てしまいます。 JDBCの設定かなと思い、調べてみたのですがわからないため、ここに質問をさせていただきました。 エラー内容の詳細ですが、 ********** START exception javax.servlet.ServletException: サーブレットの実行により例外を投げました filters.SetCharacterEncodingFilter.doFilter(Unknown Source) root cause java.lang.NoSuchMethodError: study.struts.model.biz.LogonAuth.authentication(Ljava/lang/String;Ljava/lang/String;)V study.struts.action.LogonAction.execute(Unknown Source) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:763) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) filters.SetCharacterEncodingFilter.doFilter(Unknown Source) ********** END 長くなって申し訳ありませんが、わかる方いらっしゃいましたら、どうかご教授宜しくお願い致します。 開発環境(クライアント) ・WindowsXP ・j2sdk1.4.2_02 ・Tomcat5 ・Struts1.1

    • ベストアンサー
    • Java
  • サーブレットを始めようとしたのですが・・・

    サーブレットを始めようとして、「10日でおぼえるJSP/サーブレット入門教室」を使って勉強しようとしているのですが、最初のファイルをコンパイルしようとしたら下記のようなエラーが出てコンパイルできませんでした。 SrvIntro.java:6: パッケージ javax.servlet は存在しません。 import javax.servlet.ServletException; ^ SrvIntro.java:7: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; ^ SrvIntro.java:8: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletRequest; ^ SrvIntro.java:9: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletResponse; ^ SrvIntro.java:11: シンボルを解決できません。 シンボル: クラス HttpServlet 場所 : day07.SrvIntro の クラス public class SrvIntro extends HttpServlet{ ^ SrvIntro.java:12: シンボルを解決できません。 シンボル: クラス HttpServletRequest 場所 : day07.SrvIntro の クラス public void doGet(HttpServletRequest request, HttpServletResponse respon se) ^ SrvIntro.java:12: シンボルを解決できません。 シンボル: クラス HttpServletResponse 場所 : day07.SrvIntro の クラス public void doGet(HttpServletRequest request, HttpServletResponse respon se) ^ SrvIntro.java:13: シンボルを解決できません。 シンボル: クラス ServletException 場所 : day07.SrvIntro の クラス throws ServletException, IOException{ ^ エラー 8 個 調べた感じだとクラスパスの設定が間違っている可能性大ということらしいのですが、何度確かめてもクラスパスは合ってると思うのです・・ 何かこれじゃないか?という原因に心当たりがあればよろしくお願いします。

    • ベストアンサー
    • Java
  • eclipseでのstrutsについて

    すみませんがどなたか助けてください! strutsでの開発をすることとなり、現在勉強中なのですが最初のjspにて parsingエラーとなりつまづいております。。 【現在の環境】 eclipse3.0.1 Tomcat 5.0.28 j2sdk1.4.2_08 struts1.1 主なプラグイン: lomboz.301 (EMF 2.0.2) tomcatplug-in V3 Hibernate synchoronizer 3.0.1  以上のような環境でeclipseから新規プロジェクトを Tomcatプロジェクトにて作成し、struts-blank.warを解凍したものをworkspaceにコピーしております。  struts関連の参考サイトをみながら学習しておりましたが、 まず最初の"http://localhost:8080/プロジェクト名/index.jsp"にアクセスしてもエラーとなります。 エラーログ: javax.servlet.ServletException: Missing message for key "welcome.title"~以下略 また、eclipseのindex.jspファイル上でもエラーが表示されておりまして、 <%@ taglib uri="/tags/struts-logic" prefix="logic" %>のところで 「JSP Parsing Error:"/tags/struts-logic"がみつかりません。」と表示されます。 環境設定に問題があるのでは・・と調べてはいるのですが2日悩んでおりますが未だ解決に至っておりません。  http://localhost:8080/struts-blank/にアクセスするこは確認できております。  とりわけ自信がないのはeclipseでのTomcatの設定なのですが、色々調べてみたつもりですが、 上手くいきません。 クラスパス:C:j2sdk1.4.2_08\tools.jar ブートクラスパス:C:j2sdk1.4.2_08\rt.jar          C:j2sdk1.4.2_08\charset.jar 以上の設定をしています。 eclipseでは不要とのことですが、 JAVA_HOMEやTOMCAT_HOMEなどは環境変数で 設定してみました。  やれることはやったつもりなのですが.. もう私レベルでは手詰まりとなってしまいました。 どなたかお助けください。。。

    • ベストアンサー
    • Java
  • strutsに関連したxmlのサーブレットマッピング

    失礼致します。 初歩的なことですが質問させてください。 strutsにおけるxmlファイルの記述例は次のようになります。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> ここで、新しいサーブレット(download)を追加しようと次のように記述を加えました。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <servlet-name>download</servlet-name> <servlet-class>Download</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-patte <servlet-name>download</servlet-name> <url-pattern>/download</url-pattern>rn> </servlet-mapping> すると、入り口のファイルに対し、「The requested resource (/プロジェクト名/ファイル名.jsp) is not available.」と警告されました。 strutsではサーブレットの追加は出来ないのでしょうか?ご指摘お願いします。

    • ベストアンサー
    • Java
  • strutsでのエラーメッセージについて

    strutsを勉強し始めたばかりなので質問が漠然としていて申し訳ありませんが、以下のようなエラーメッセージが出て自分では解決できないので、みなさんに質問させていただきます。 エラーメッセージは以下のものです。 org.apache.jasper.JasperException: Cannot find bean org.apache.struts.taglib.html.BEAN in any scope at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 文字制限の関係上以下省略 このようなエラーメッセージが出ます。 strutsはEclipse上で動作をさせています。 そして実行前にTomcatを動作させてからInternetExplorerに実行させたい場所を指定してJSPを呼び出そうとしている時に起こるエラーメッセージです。 質問が漠然としており非常に返答しにくいかもしれませんが,対処法が私には全く見当がつかないので,~を修正してみては?といったいくつかの解決方法を頂きたいのです。 質問内容がわかりにくい等ありましたら御指摘ください。 では、御返答宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう