jspソースのエラーが修正できなくて困っています。
現在、tomcat5.5とjdbc、muSQLなどを用いてシステムを作っています。
形態素解析などと組み合わせたいので、
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
を使いたいのですが、実行すると以下のエラーが発生します。
org.apache.jasper.JasperException: 絶対URI: http://java.sun.com/jsp/jstl/core はweb.xmlとこのアプリケーションを配備したJARファイルのどちらかでも解決できません
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
jsp1.1やjstlのjarファイルはWEB-INT/libフォルダに入れています。
web.xmlもバージョン2.4なので問題がないように思います。
いろいろ修正したのですがエラーが消えず、困り果てています。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
> tomcatのlocalhostフォルダ内に
> 【test.xml】
> <?xml version='1.0' encoding='Windows-31J'?>
> <Context docBase="C:/Test" path="/Test"/>
これは、「Test Webアプリ」と表現できるもので、アクセスするには
http://<hostname>:8080/Test/test.jsp
と、URIの中にTestというのが含まれるはずだ。で、この場合、jarを置く場所は
c
|
+-Test ← あなたがtest.xmlで定義した Test Webアプリの基点
| |
| +-test.jsp ←実行したいファイル
| |
| +-WEB-INF ←ここにWEB-INFが必要
| |
| +-web.xml ←ここにweb.xmlが必要(とりあえずROOTのweb.xmlをコピーすればいい)
| |
| +-lib ← ここにlibが必要
| |
| +-jstl.jar ← jstl.jarはここ(c:\Test\WEB-INF\lib)におかないといけない
| |
| +-standard.jar ← standard.jarはここ(c:\Test\WEB-INF\lib)におかないといけない
|
+-ProgramFiles
|
+-tomcat5.5/webapps/ROOT ← これはtomcatがデフォルトで定義したROOT Webアプリ
|
+-WEB-INF
|
+-web.xml
|
+-lib
| |
| +-jstl.jar ←不要
| |
| +-standard.jar ←不要
|
+-tld ←不要
> が、jarファイルを入れると、他のフォルダで実行はできない、ということなんでしょうか?
> それとも、jarファイルをtestフォルダのどこかに入れると大丈夫なのでしょうか?
とりあえずこの辺はtomcat以前(J2EEの初歩の初歩)というか、「え? こんな事も知らずにWebアプリやろうとしてんの?」と思われること間違いなしな話なので、もう少しその辺を勉強してから試す方がいいね。正直、C言語で例えれば「プログラムを書いたのですがコンパイルのやり方がわかりません。」というレベルのお話だ。「や、コンパイルできるようになってから書き始めようよ。」って思うでしょ? それとほぼ同レベル。
JSTLはもう少しステップアップしてからの方がいいんじゃないかな。最低限この辺の用語を理解してからの方が良いのでは。
・Webアプリ(J2EEのコンテキストパス的な意味の)
・サーブレット
・JSP
・WEB-INF
・WEB-INF/web.xml
・WEB-INF/classes
・WEB-INF/lib
・tld、タグ ライブラリー デスクリプション
・warファイル
ありがとうございます。
やはり、jarファイルの場所が違うんですね。
MyAQL×Tomcatでのwebアプリケーションを問題なく完成することができたので、
次のステップとしてjstlをしてみよう、と思ったのですが、
もう少し早かったみたいですね(苦笑)
ただ、これがC言語を初めてコンパイルを知らない、ということと一緒、と言われると
そんな基礎も知らなかったんだな、とショックとともに認めなくてはいけませんね。
一応、Testフォルダ内に初めはjarファイルを置いておいてエラーが出てしまって、ネットでいろいろエラーを調べていたらtomcatフォルダ内に、という人がいたので試したのですが、結果的に解決することができませんでした。
言語としては、あらかたは理解しているつもりではいるのですが、もう一度勉強しなおそうと思います。
いろいろとありがとうございました。
No.3
- 回答日時:
> 少し気になったのですが、jstl.jarなどのjarファイルすべてを
> tomcat5.5/weppaps/ROOT/WEB-INF/lib/フォルダに入れているのですが、
> これは場所はあっているのでしょうか?
> 同時に、実行したいフォルダはtomcatとは別のところにあります。
その「別のところ」がどこなのかを言って欲しかった。でないと判断できん。
tomcat5.5/weppaps/ROOT/WEB-INF/lib/にjarがあるのであれば、質問文のJSPはtomcat5.5/webapps/ROOT(あるいはその配下のディレクトリー)の中に無いといけない。こんな感じ
tomcat5.5/webapps/ROOT
|
+-test.jsp ← 質問文のJSP
|
+-WEB-INF
|
+-web.xml
|
+-lib
| |
| +-jstl.jar
| |
| +-standard.jar
|
+-tld ← tomcat5.5では本来ここにtldファイルを置く必要は無い。
で、ROOTアプリの中にあるのでブラウザーからは
http://<hostname>:8080/test.jsp
にアクセスする事になる。webapps/ROOTというのは、tomcat5.5の一般的な設定(tomcat5.5/conf.のserver.xmlとかcontext.xmlとかに書かれている内容)ではコンテキスト名を持たないWebアプリケーションになる。
いつもありがとうございます。とっても助かります。
別の場所、ですが、
c
|
+-test
| |
| +-test.jsp ←実行したいファイル
|
+-ProgramFiles
|
+-tomcat5.5/webapps/ROOT
|
+-WEB-INF
|
+-web.xml
|
+-lib
| |
| +-jstl.jar
| |
| +-standard.jar
|
+-tld ← tomcat5.5では本来ここにtldファイルを置く必要は無い。
にあります。
tomcatのlocalhostフォルダ内に
【test.xml】
<?xml version='1.0' encoding='Windows-31J'?>
<Context docBase="C:/Test" path="/Test"/>
で定義しているので、他のメインのプログラム(DBをjspに呼び出す)は実行できています。
が、jarファイルを入れると、他のフォルダで実行はできない、ということなんでしょうか?
それとも、jarファイルをtestフォルダのどこかに入れると大丈夫なのでしょうか?
できれば、testフォルダ内でtest.jspを実行したいと思っています。
ちなみに、ROOTフォルダ内にtest.jspを入れて実行した場合、エラー分に変化がありました。
org.apache.jasper.JasperException: TldLocationsCacheを初期化中の例外です: ファイル/WEB-INF/tld/x.tldのXML解析エラー
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
でした。
これだと、jarファイルはとおっている、ということですよね?
(このエラーも解決できていませんが。。。)
よろしくお願いします。
No.2
- 回答日時:
>URIのコードはシステムに書かれたものと一緒で
> http://java.sun.com/jsp/jstl/core
> でした。
う~ん本当だねぇ。さて、それではどうしたものかな。
1.こう書き換えてみる
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
これでうまくいくのであれば、web.xmlがおかしい可能性が高い。jarは全て正しく読み込まれているけど、META-INFの中のxsd形式のtldたちに反応していないという事(DTD形式のtldは正しくロードされている)。jarの中を見れば分かるように、これはjstl1.0のuriだ(c-1_0.tldの中に書かれているtldで、xsdではなくDTDなので古いモノ)。
2.上記の1とは別にweb.xmlに以下の記述を加えてみて、standard.jarを解凍してMETA-INFの中にあるc.tldを/WEB-INF/tlds/の中に入れてみる。
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
</taglib>
これでうまくいく、あるいは別のエラーになるなど、要するに挙動が変わるのであれば、(理由は分からんが)/WEB-INF/libのjstl.jarとstandard.jarが反応していないという事になる。対処法? うん、わかんない。catalina.outとか見てみたら何か書いてるかも。
3.Tomcatを再起動してみる(笑)
いや、困った時の再起動、とか。まぁこれで直ったら誰も苦労しないよね。ところで、tomcatを停止してログファイルをばっさりと全部削除し、もう一度起動してみると(新しく作られた)ログの中に素敵なサムシングを確かめたり見つけたり微笑んだりできるかも知れません。
実験を丸投げで申し訳ないがこれらを試してみていただきたい。
回答ありがとうございます。
勉強になります。
1~3について、試してみましたが、どれも解決にいたりませんでした。
まず、1についてですが、試しに
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/core" %>
もしてみたのですが、どちらもだめでした。
2についてですが、まず、c.tldに上書きができませんでした(汗)
なので、まったく同じ文章を作って、いったん削除したのちに新しくc.tldを作ったのですが、現状は変わりませんでした。
エラーメッセージも同じままです。
また、以前からtldフォルダの中にc.tldを入れていたのですが、tldsフォルダに変えても変化なしです。
3についてですが、これは実は何度もやっているのです(苦笑)
Tomcatを入れてすぐにも全く反応がなく、PCの再起動をしたら通常起動した、ということがあったので、tomcatとpcの再起動は設定を変える毎といえるくらい頻繁にしているのですが、変わりなしです。
少し気になったのですが、jstl.jarなどのjarファイルすべてを
tomcat5.5/weppaps/ROOT/WEB-INF/lib/フォルダに入れているのですが、これは場所はあっているのでしょうか?
同時に、実行したいフォルダはtomcatとは別のところにあります。
※jstl.jarなどと連結させないtomcatとsqlの連結はこのフォルダで正常に反応しています。
ココに間違いがある、ということはありますか?
いろいろ質問をしてしまってすみません。
よろしくお願いします。
No.1
- 回答日時:
私はjstlは使った事がないのでそのtld(タグライブラリーデスクリプション)がどうなっているか分からないんだけど、実物のjarがあるのだからそれを解凍してtldファイルの中身を見てみれば良いのではないでしょうか。
jstlのjar(とかそれ以外のjar)を解凍すると、拡張子がtldのファイルがある(はず)。これはXMLファイルなので、テキストファイルで開く。するとtaglibタグの中にuriタグがあるので、その中身を<%@ taglib prefix="c" uri="ここ" %>にコピペする。これで動く・・・・と思う。解凍はjarコマンドでも良いし、WindowsではWinRAR、lhaplusなどのソフトを使えば解凍できるし、最悪拡張子をjarからzipにかえてしまえばunzipやWindowsの書庫フォルダー機能でも解凍できる。
JSPの中に記述するtaglibディレクティブのuri属性は、このtldファイルのuriか、web.xmlに記述したタグリブ情報のuriパラメーターのいずれかを指定する事になる。
もしこれでもできなかったら、uriに何を書けば良いのか調べてみるのでjarの正確なファイル名や入手先を教えていただきたい。
さっそく、解答ありがとうございます。
URIのコードはシステムに書かれたものと一緒で
http://java.sun.com/jsp/jstl/core
でした。
問題としてはURIに書くことが誤っている、ということなんですね…!
正確なファイル名と入手先ですが
【jstl1.1】
http://www.meisei-u.ac.jp/mirror/apache/dist/jak …
jakarta-taglibs-standard-current.zip を解凍
・standard.jar
・jstl.jar
【jsp1.1】
ごめんなさい。
こちらは、どこのサイトからダウンロードしたかわからなくなってしまいました。
ダウンロードフォルダはjsf-logon_aplです。
・commons-beanutils.jar
・commons-digester.jar
・commons-logging.jar
・jsf-api.jar
・jsf-impl.jar
ちなみに、実行したいサンプルコードは配布されているサンプルプログラムです。
以下を実行したいと思っています。
<%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<c: set var1="data" value="テストdesu" />
<c:out value="${data}" />
</body>
</html>
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
昨日見た夢を教えて下さい
たまにすごいドラマチックな夢見ること、ありませんか? 起きてからも妙に記憶に残っているような、そんな夢。
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
jspでこんなエラーが出ます
Java
-
webアプリを作ってます。エラーがあります。
Java
-
-
4
jap実行時のTomcatのエラーに困っています!教えて下さい。
Java
-
5
「<c:forEach タグが終了していません」というエラーが出てしまう
Java
-
6
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
7
JSPのクラスをコンパイルできない問題
Java
-
8
オブジェクトの中のプロパティを認識できません
Java
-
9
JAVAにのeclipseに関する質問です! 私は最近eclipseをインストールしたのですが、最初
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
html上で、バッチやexeファイル...
-
複数のパソコン間のDir関数につ...
-
ASRook P55DE3
-
jspのエラーが修正できません。
-
エラー この変数は宣言されて...
-
HTMLファイルからexeファイルを...
-
Eclipseで、プロジェクト名のと...
-
Javascriptの値をJava(JSP)へ渡...
-
vs codeはオフラインでも使用で...
-
javaクラスファイルをEclipseで...
-
split関数で区切り文字がない場合
-
Eclipseのデバッグ機能が正常に...
-
classファイルについて
-
eclipse でclassesフォルダーが...
-
eclipseでスタックサイズを変更...
-
earファイルを展開する方法
-
.jarファイルの中身って書き換...
-
Eclipseのアンインストールの仕方
-
YouTubeでコメントしようとした...
-
eclipseでのsvn認証エラー回避方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
html上で、バッチやexeファイル...
-
VBA Application visibleの...
-
jspのエラーが修正できません。
-
Access VBAよりシート名を取得...
-
HTMLファイルからexeファイルを...
-
VBAで作成したマクロをデスクト...
-
*.asp の拡張子名がついたht...
-
別のAccessファイルのフォーム...
-
system.mdwを見つけることが出...
-
量子化学計算ソフト GAMESS の...
-
VB5が起動しない
-
エラー この変数は宣言されて...
-
RPA(PowerAutomate)の実装について
-
exeファイルが実行中かどうか、...
-
vb.netでフォルダをcab圧縮する...
-
VistaのIISで動作するASPのExce...
-
VB6.0 Shellによる終了監視に...
-
java 17 を環境変数まで設定...
-
AccessのMDBファイルを自動で最...
-
GUIアプリをコマンドラインで使...
おすすめ情報