- PR -

tldファイルが見つからない

1
投稿者投稿内容
ティノ
会議室デビュー日: 2003/07/11
投稿数: 12
投稿日時: 2003-07-31 17:46
こんにちは。
件名について解決するためには、どうすればよいか
アドバイスをお願い致します。

<現象>
現象は、http://****:8080/TestWeb/sendMessage.jspへアクセスした際、
【org.apache.jasper.JasperException: JSP ファイル "/WEB-INF/struts-bean.tld"
が見つかりません】
というメッセージでHTTP Status 500 - エラーとなり、アクセスできない、とったものです。

当方の対応としては、web.xml(EclipsのTestWebパッケージにあるWEB-INFフォルダ
内にあるもの)に下記を追記し、解決を図ろうとしました。

■web.xmlのコード
<web-app>
(〜省略)
<taglib>
  <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
  <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
  <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
  <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
(〜省略)
</web-app>

■sendMessageのコード
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
(以下省略)

しかし、同じ現象が起きてしまいます。

<環境>
環境は、下記の通りです。
・Eclips2.1.0
・j2sdk
・tomcat4.0
・Apach2
・Struts1.1
・EasyStruts

<TOMCATログ>
TOMCATログ上に、下記のMsgがでています。Eclips上の、
web.xmlのエレメントのコーディング順序が違う?といった事でしょうか。。
ちなみに、taglibエレメントは</servlet-mapping>の下に記述し、taglib
の後は、 </web-app>で閉じています。書籍等をあたっても、間違っているとは
思えないんですけど。。。(勘違い?)

致命的: Parse Error at line 896 column 11: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".


どうか宜しくお願い致します。。

すろんぬ。
会議室デビュー日: 2002/07/26
投稿数: 10
投稿日時: 2003-07-31 17:57
こんにちわ。

<taglib>〜</taglib>の下に

icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,

上記エレメントがあったりしませんか?
グーフィー
会議室デビュー日: 2003/07/07
投稿数: 9
投稿日時: 2003-08-01 10:01
こんにちわ。

ひとつ気になった点があります。
私の知識不足かもしれませんが、
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
という指定はできないのでは?と思っています。
URIって、http://とかftp://とかで始まったような・・・

解決策としては2つあります。
■TLDファイルの配置場所
これはいたって簡単です。
@sendMessage.jspと同じパスにstruts-html.tldを配置する
AsendMessage.jspに
 <%@ taglib uri="/struts-html.tld" prefix="XXX" %>
 と記述する。

■カスタムタグを登録する
@web.xmlにデプロイメント記述子を作成する
 <taglib>
  <taglib-uri>http://****:8080/TestWeb/struts-html</taglib-uri>
  <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
 </taglib>

AsendMessage.jspに
 <%@ taglib uri="http://****:8080/TestWeb/struts-html" prefix="XXX" %>
 を記述する。


参考にでもなれば幸いです。
ティノ
会議室デビュー日: 2003/07/11
投稿数: 12
投稿日時: 2003-08-01 10:09
すろんぬ さま

いえ、ありません。。。
</taglib>直下には</web-app>のみでございます。

逆に、.jspファイルのtaglibディレクトリのパスが違うかも。。修正してみます。
(実行中)
ん?違うメッセージが出力されました。
<tomcatログ>
org.apache.jasper.JasperException: /sendMessage.jsp(5,0) クラス html をロードできません

解釈すると、htmlクラスは見つけたけど、ロードできないよ〜、って事ですよね。。
コンテナにロードできていない。。う〜ん。。

しばらく悩んでみます。。



ティノ
会議室デビュー日: 2003/07/11
投稿数: 12
投稿日時: 2003-08-01 10:12
ぐーふぃーさま

レス有難うございます!
そうですよね、私も配置場所変えてみよーとおもいました。

他の策も実施してみます。

有難うございました!
Clap
常連さん
会議室デビュー日: 2003/02/14
投稿数: 20
投稿日時: 2003-08-01 13:23
こんにちは〜。

<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
taglib-uri属性がとる値は相対パスまたは絶対パスの値をとれるので
これでいけるはずです。

原因は多分別で
<web-app>〜</web-app>内に使えない属性などあったりしてませんか?


ティノ
会議室デビュー日: 2003/07/11
投稿数: 12
投稿日時: 2003-08-01 14:23
clapさま

■おっしゃる通り、taglib内では相対&絶対両方効くよーで、

<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>

で、【org.apache.jasper.JasperException: JSP ファイル "/WEB-INF/struts-bean.tld"
が見つかりません】は、でなくなりました。

ただ、【org.apache.jasper.JasperException: /sendMessage.jsp(5,0) クラス html をロ
ードできません】は、出力されています。。。

■ご指摘の点、web.xml内の記述ですが、数種類の書籍等と比較しても
特におかしな個所はないように見受けられます(内容は下記参照)。

■あと1つ気になってるんですけど、Eclips上のweb.xmlファイルと、Tomcatルートフォルダに
あるweb.xmlの、関連ってどうなってるのでしょうか?

EclipsからTomcatを実行すれば、当然前者を見に行きますよね?
Tomcatにあるweb.xmlは無視されると思っています。
ただ、どうもログをみると、両方みにいっているような気がしています。
例えばこのMsgですが
Parse Error at line 897 column 11: The content of element type "web-app" must m
(省略)
どう考えても897ラインもいないんですよね。。これはTomcatフォルダだし。。




※下記に、web.xmlを転記します。
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
 <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
 <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
 <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
 <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
 <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
 <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>

</web-app>
1

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