- PR -

struts起動時に/WEB-INF/struts-html.tld" が見つかりませんとなってしまう。

投稿者投稿内容
未記入
会議室デビュー日: 2008/03/12
投稿数: 4
投稿日時: 2008-03-12 00:36

佐伯といいます。
下記の環境で
Strutsによるスーバーサンプル150
という書籍のサンプルを動作させようとしているのですが
起動時に/WEB-INF/struts-html.tld" が見つかりませんとなってしまいます。
windows XP
Apache Tomcat/6.0.14
struts1.2


何が悪いのでしょうか?
GOOGLEなどでも、検索をかけて探しましたが
。。JSPの先頭で下記の指定で解決したなどありましたが
自分の場合解決しません。
  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
WEB-INFの配下には、下記のファイルがあります。
 struts-bean.tld
 struts-config.xml
 struts-html.tld
 web.xml

ディレクトリ構成
├─META-INF
├─view
└─WEB-INF
├─classes
│ └─action
│ └─form
├─lib
└─src
└─action
└─form


HTTPステータス 500 -

--------------------------------------------------------------------------------

type 例外レポート

メッセージ

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

org.apache.jasper.JasperException: JSP ファイル "/WEB-INF/struts-html.tld" が見つかりません
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:160)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:420)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:476)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1426)
org.apache.jasper.compiler.Parser.parse(Parser.java:133)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:167)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


注意 原因のすべてのスタックトレースは、Apache Tomcat/6.0.14のログに記録されています
--------------------------------------------------------------------------------
Apache Tomcat/6.0.14

[Hello.jsp]-------------------------
<%@page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html:html locale="true" >
<BODY>
<!-- 1)HTMLのFORMタグに変換される -->
<html:form action="/HelloWorld" >

<!-- 2)メッセージリソースを表示する -->
<bean:message key="greeting" /><BR>

お名前をどうぞ。<BR><html:text property="name" /><BR>
<html:submit>
<bean:message key="greeting" />
</html:submit>
</html:form>
</BODY>
</html:html>




[web.xml]-------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
version="2.5">

<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>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<!-- doの拡張子がつくリクエストはStrutsのActionServletによって処理される -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- エンコーディングフィルタの設定 -->
<filter>
<filter-name>Encoding</filter-name>
<filter-class>filter.EncodingFileter</filter-class>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



</web-app>
-------------------------
[struts-config.xml]

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<!-- Form情報の定義 -->
<form-beans>
<!-- HelloWorldFormという名前(キー)でaction.form.HelloWorldFormクラスを利用する -->
<form-bean name="HelloWorldForm" type="action.form.HelloWorldForm" />
</form-beans>

<!-- アクションの定義 -->
<action-mappings>
<!-- Form情報をHelloWorldFormとして、action.HelloWorldActionクラスをアクションとして指定する -->
<!-- Form情報はリクエストスコープに格納される -->
<action name="HelloWorldForm" type="action.HelloWorldAction" path="/HelloWorld" scope="request" >
<!-- アクションの遷移先として論理名をhello ファイルパスを/view/HelloWorld.jspとする -->
<forward name="hello" path="/view/HelloWorld.jsp" />
</action>
</action-mappings>
<message-resources parameter="ApplicationResource" />
</struts-config>

-------------------------




山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2008-03-12 01:46
struts-example.war は動きますか?
動く場合、struts 関連のファイル(xml,tldなど)の配置に何か違いはありますか?
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2008-03-12 07:17
web.xmlにtaglibの設定が見当たりませんね
Javaの道:JSP(13.カスタムタグ(概要))(jsp taglibでぐぐった最初にでてきました)を参考に
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2008-03-12 13:48
ちょっと違うかもしれませんが
http://www.mlexp.com/wiki/?eclipse
で取り上げられている例が参考になったりしないでしょうか
未記入
会議室デビュー日: 2008/03/12
投稿数: 4
投稿日時: 2008-03-12 22:58
> struts-example.war は動きますか?
>動く場合、struts 関連のファイル(xml,tldなど)の配置に何か違いはありますか
インギさん
途中経過ですが
struts-exampleは、動作しました。
あとは、動作するweb.xmlと動作しないweb.xmlを比較して行くしかないですよね?
難航中(なかなかうまくいきません。)


>web.xmlにtaglibの設定が見当たりませんね
kumaさん、あすかさん
URLに確かにweb.xmlにtaglibの記載がありましたが
サンプル本(書籍)のweb.xmlには、
すべてtaglibの記載がありませんでした。
なぜ必要ないのか?不明です。

tom30
会議室デビュー日: 2008/03/13
投稿数: 3
投稿日時: 2008-03-13 18:18
はじめまして

引用:

未記入さんの書き込み (2008-03-12 22:58) より:

URLに確かにweb.xmlにtaglibの記載がありましたが
サンプル本(書籍)のweb.xmlには、
すべてtaglibの記載がありませんでした。
なぜ必要ないのか?不明です。



web.xml に taglib の記述をすると、記述した uri を JSP に書けばよくなります。あなたの書いている指定方法はこれではなく「WEB-INF というフォルダの下に struts-html.tld ファイルがありますよ」と直接 JSP に指定しています。
(web.xml に書いても JSP の方をそのままにしておけば何も状況は変わらないはずです)

的外れかもしれませんが、エラーメッセージを見る限り本当に /WEB-INF/struts-html.tld がなかったりしませんか?
どういう開発環境で動かしているのか分かりませんが、war ファイルを作って Tomcat に配備することをしていたりするとたまに *.class と *.jsp しか war に含めなかったりした経験がありますので念のため。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2008-03-14 01:09
引用:

未記入さんの書き込み (2008-03-12 22:58) より:

>web.xmlにtaglibの設定が見当たりませんね
kumaさん、あすかさん
URLに確かにweb.xmlにtaglibの記載がありましたが
サンプル本(書籍)のweb.xmlには、
すべてtaglibの記載がありませんでした。
なぜ必要ないのか?不明です。




まずjspに記述されたtaglibのディレクティブはweb.xmlに設定がないか見に行くはずです。
該当するものがない場合、jspからの相対パス、又はコンテキストルートからのパスを確認します。(記憶違いでなければ・・)
uriが"/"ではじまるものはコンテキストルートからのパスと解釈されるため、
書籍ではweb.xmlでの指定を省略しても動くように配置してあるものと考えます。
(書籍自体をしりませんが動かないサンプルの記載は売り物として値しません)
佐伯さんのtldの配置からはWEB-INF直下にtldが存在するということなので
考えられることとして、コンテキストルートを書籍どおりでなく独自に設定していませんか?

# よくみたらお名前がありましたね。未記入さん->佐伯さんとさせていただきました。


[ メッセージ編集済み 編集者: kuma 編集日時 2008-03-14 01:11 ]
未記入
会議室デビュー日: 2008/03/12
投稿数: 4
投稿日時: 2008-03-15 23:40
佐伯です。
struts-examplesを動作させながら動作を検証させていた所
サンプルが動くようになってきましたが
まだ質問があります。


サンプル書籍では下記環境を使用しています。
 TOMCAT5.5.20
 JDK5
 struts1.2.9

自分の環境では、下記環境を使用しています。
 TOMCAT6
 JDK6
 struts1.2.9

サンプルを動作させるまでの調査:
 1 JDK6&TOMCAT6使用の為、web.xmlを下記のように変更しました。
 2 1実施後に、warファイルの解凍場所をサンプルに合わせて
   何度かTRYするうちに動作するようになりました。
    例)1.1.warの場合
     Tomcat 6.0\webapps\1-1
   

質問内容:
 warファイルの解凍場所を
 「Tomcat 6.0\webapps\1-1」から
 「Tomcat 6.0\webapps\STRUTS_SAMPLE\1-1」へ
 変更させた場合に、質問した内容と同じようなエラーが出ます。
 (org.apache.jasper.JasperException: JSP ファイル "/WEB-INF/struts-html.tld" が見つかりません)

 warファイルの解凍先は、必ずwebappsフォルダの配下に設置して
 使用しなければならないのでしょうか?
 JAVAのコンパイル、web.xml、オブジェクトの関係(JAVAの基本)が
 分かっていないので、こういう内容の質問をしています。
 (勉強しようと思います。)




web.xmlの変更結果
--------------------------------
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

から

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
version="2.5">
へ変更

スキルアップ/キャリアアップ(JOB@IT)