- - PR -
Strutsを用いたWebアプリで、classes以下のファイルをjar化して実行したい
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-08-10 12:41
こんにちは、java初心者です。
Strutsを用いたWebアプリを現在作っているのですが、WEB-INF/classes以下にある ファイルをjar化して、WEB-INF/lib以下に置いて実行したいと思っています。 が、classes以下のファイルをただclasses.jarとして、lib以下に置いても うまくいきません。おそらくパスの問題なのかと思いますが、どのように指定すれば 良いのかわかりません。 サーバーはローカルでTOMCAT4.1を使用しています。 struts-config.xmlの内容を変更したり、TOMCATのserver.xmlで何か指定が 必要なのでしょうか? ご存知の方いらっしゃいましたら教えていただけるとうれしいです。 | ||||
|
投稿日時: 2004-08-10 13:02
通常 classes の中身をそのまま jar に固めて lib に放り込めばうまくいくはずです。
classes 内のディレクトリ構造はそのままに jar ファイルにしていますか? あと、クラスロードの優先順位は classes -> lib の順になっているので Struts のクラスにパッチをあてているような場合は lib ディレクトリに入れるとうまく反映されないかもしれません。 また、うまくいきません、とはどのような症状ですか? | ||||
|
投稿日時: 2004-08-10 13:25
インギさん 早速お返事いただきありがとうございます。
以下のようなエラーがでます。 HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Exception creating bean of class webapp.CertificateForm: java.lang.ClassNotFoundException: webapp.CertificateForm (以下略) classes 内のディレクトリ構造はそのままでjar ファイルにしています。 (jar cf classes.jar classes としてjarを作りました) strutsを使ってサンプルを作っただけなので、多分Struts のクラスにパッチを当てて いるわけでもないと思います。 Formクラスが見つかっていないようなので、Struts-config.xmlの記述間違いなのかと思うのですが、いかがでしょうか。 | ||||
|
投稿日時: 2004-08-10 13:49
>(jar cf classes.jar classes としてjarを作りました)
jarの作り方を間違えています。 classes.jar の中身をのぞいてみてください。 classes/.../となっているはず。 それではだめです。 jar cf classes.jar -C classes . としてください。 (jarのマニュアルを読んでください。) | ||||
|
投稿日時: 2004-08-10 16:46
yuzyさんありがとうございます。
確かに間違っていました。jar cf classes.jar classes だと classesの下にさらにclassesが出来るのですね。とても勉強になりました。 今度は、jar cvf classes.jar -C classes/ . でjarを作って ちゃんと classesの下に同じフォルダ構成でファイルを入れることが出来ました。 しかし、TOMCATを再起動して、再度URLを打ってみたのですが、全く同じ エラー(java.lang.ClassNotFoundException)が出ます。 classes以下にファイルを置いているときにはきちんと実行できていたので うまくいくはずだと思うのですが、どうもうまくいきません。 今のディレクトリ構成は以下のようにっています。 WEB-INF/classes/ ・・・中身はなし /lib/ ・・・classes.jar struts.jar 等 /src/ ・・・javaのソースファイル /struts-config.xml /web.xml /struts.tld 等々 struts-config.xmlの内容は、 <form-bean name="certificateForm" type="webapp.CertificateForm" /> というように、jarにする前と変えていません。 jarファイルの名前を指定したりしないといけないのでしょうか? | ||||
|
投稿日時: 2004-08-10 16:58
まず jar ファイルがちゃんと作られているか確認してみましょう。
java -cp classes.jar Test こんなのはうまくいきますか? | ||||
|
投稿日時: 2004-08-10 20:44
jar tvf classes.jar
で、ディレクトリ構成がパッケージの構成で一覧表示されますか? | ||||
|
投稿日時: 2004-08-10 21:21
インギさん ボアさん ありがとうございます。
インギさんがくださったソースを実行してみた所、きちんとOKが出ました。 また、jar tvf classes.jar を実行してみると ツリー構造で表示されました。 少し気になったのは classes/./org/apache/jsp/menu_jsp.class classes/./org/apache/jsp/index_jsp.class classes/./org/apache/jsp/error_jsp.class というように、全ての ファイルの表示で間に /./ が表示されていた事です。 それから、先ほど確認してみた所、strutsをラップしたフレームワークを 同時に使用していたことを忘れていました。 インギさんが言われていた、 >Struts のクラスにパッチをあてているような場合は lib ディレクトリに入れるとうまく反>映されないかもしれません。 という事なのでしょうか? ちなみに、そのstrutsをラップしたフレームワークは、strutsと同様、jarファイルを WEB-INF/lib以下に置くと使えるようになります。 | ||||
