- PR -

ビルド時にjspファイルをコンパイルしたい時

投稿者投稿内容
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2006-12-26 20:38
質問させていただきます。
Struts1.2.9とTomcat5.0を使って、電話帳登録のWebアプリケーションを作成しました。

build.xmlを使ってwarファイルを作成するとき、現在はwarの中にJSPファイルをそのまま入れているのですが、
ビルド実行時に自動的にJSP→java→classとコンパイルして、
warの中にコンパイル後のclassファイルを入れたいと考えています。

インターネットで調べてみたところ、
 <target name="jspc"> や <target name="compile_jsp">
といったターゲット名があることはわかったのですが、
2つの違いやそれぞれのオプション設定の意味がわからず困っているところです。
 
http://ash.jp/java/wls/wls61_hellojsp.htm
http://sdc.sun.co.jp/javasystem/techtips/build.html

実際にJSP→java→classとコンパイルできるbuild.xmlを作られた方、
もしくは作り方をご存知の方がいましたら教えていただけないでしょうか。

なお、JSPCプラグインを使ってビルドとは別にJSPからjavaファイルを作ることはできたので、
JSPCプラグインは正常に動作しています。

開発ツールはEclipse3.2です。よろしくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-26 23:27
前者は WebLogic で、後者はiPlanetですね。
Tomcat を使っているのであれば Tomcat のドキュメントを確認しましょう。
Tomcat の JSP コンパイラは Jasper という名前のコンポーネントです。
http://tomcat.apache.org/tomcat-5.0-doc/jasper-howto.html
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/jasper-howto.html
http://ant.apache.org/manual/OptionalTasks/jspc.html
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2006-12-27 21:55
回答ありがとうございます。
教えていただいたページのソースをbuild.xmlに取り込み、
jarファイルの場所指定のみ修正して実行してみました。

 <taskdef classname="org.apache.jasper.JspC" name="jasper2" >
  <classpath id="jspc.classpath">
   <pathelement location="${java.home}/../lib/tools.jar"/>
   <!-- struts.jarやjakarta-oro.jarなどの保管ディレクトリ -->
   <fileset dir="${basedir}/cls/WEB-INF">
    <include name="**/*.jar"/>
   </fileset>
  </classpath>
 </taskdef>
 (他はそのままです)

すると、以下のようなビルドエラーが表示されました。
   taskdef class org.apache.jasper.JspC cannot be found

org.apache.jasper.JspCがローカルに無いから駄目というのはわかるのですが、
どこでそれを入手できるのか、どこにそれを保存すればいいのかがわかりません。

( http://www.docjar.com/docs/api/org/apache/jasper/JspC.html に
  JspC.javaというファイルがあったのですが、これのことでしょうか? )

これらの入手・設定方法を教えて頂けないでしょうか。
よろしくお願いします。

また、
http://www.atmarkit.co.jp/fjava/rensai2/eclipse03/eclipse03.html
このページでJasperデバッグパッチ(jasperDebugPatch)というものがあると知ったのですが、
これを使っても同じようなことができるのでしょうか?
試してみたのですがどこにも.jsp.javaファイルが生成されませんでした。
Tomcat Version4.1.24と書かれていたので、
5.0.28を使用している私の環境では無理なのかもしれませんが…
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-27 22:15
「他はそのまま」とありますが、"${tomcat.home}/server/lib"や"${tomcat.home}/common/lib"も指定してありますでしょうか?
ここらへんに jasper の本体が入っていそうですが。
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2006-12-27 23:41
エラーが出たので
   <!-- struts.jarやjakarta-oro.jarなどの保管ディレクトリ -->
   <fileset dir="${basedir}/cls/WEB-INF">
    <include name="**/*.jar"/>
   </fileset>
の部分は直しましたが、
インギさんのおっしゃる部分はまだエラーに引っかかっていないのでそのままです。
ただ、{tomcat.home}を指定していないのでエラーにはなると思います。

{tomcat.home}とは、一般的にどのフォルダを指すのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-27 23:59
「エラーが出たので〜の部分は直しました」ってどういう意味でしょう?
taskdef の部分に WEBアプリケーションの WEB-INF 以下のライブラリを設定する必要はないと思います。
先のドキュメントは ant の知識を前提に書いてあるようですので、もし ant 自体に明るくないようでしたらまず ant のドキュメントを読んだ方がいいかもしれません。
taskdef がどういうクラスを指定する場所なのかを調べると良いでしょう。


>インギさんのおっしゃる部分はまだエラーに引っかかっていないのでそのままです。
そのまま、とはマニュアルに書いてある通りに記載されているということですか?
「jarファイルの場所指定のみ修正して実行してみました。 」と書いてあるので jar ファイルの指定箇所はドキュメントに書いてある通りには書いていないんですよね?
それと「インギさんのおっしゃる部分はまだエラーに引っかかっていないのでそのままです。」という説明はどうも食い違って聞こえてしまいます・・・。私がナナメ読みしているからかもしれませんが。


>ただ、{tomcat.home}を指定していないのでエラーにはなると思います。
思う、とは? エラーになっているのですか?エラーになっていないのですか?

>{tomcat.home}とは、一般的にどのフォルダを指すのでしょうか?
ナントカhome と来たら大抵、「ナントカ」がインストールされているディレクトリのトップを指します。

[ メッセージ編集済み 編集者: インギ 編集日時 2006-12-28 00:02 ]
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2006-12-30 11:49
返信ありがとうございます。

>>ただ、{tomcat.home}を指定していないのでエラーにはなると思います。
>思う、とは? エラーになっているのですか?エラーになっていないのですか?
エラーになっていません。
まずウェブページのものをそのままコピペしてAntビルドを実行したら、
  ${tomcat.home}/server/lib がありません。
という内容のエラー1行だけがEclipseコンソールに出力されたので、その部分だけを直しました。
 訂正前)<fileset dir="${tomcat.home}/server/lib">
 訂正後)<fileset dir="${basedir}/cls/WEB-INF">

その後再度Antビルドを実行したら、先述の
  taskdef class org.apache.jasper.JspC cannot be found
というエラー1行だけがEclipseコンソールに出力されたので、その解決法がわからず質問しました。

>"${tomcat.home}/server/lib"や"${tomcat.home}/common/lib"も指定してありますでしょうか?
>ここらへんに jasper の本体が入っていそうですが。
〜Apache Software Foundation\\Tomcat 5.0\\common\\libの中に
jasper-compiler.jar、jasper-runtime.jarというファイルがありました。
これがインギさんの仰る本体ということですね。


>>インギさんのおっしゃる部分はまだエラーに引っかかっていないのでそのままです。
>そのまま、とはマニュアルに書いてある通りに記載されているということですか?
はい。
上記のfileset属性以外は教えていただいたウェブページのソースをそのままコピペしています。


>もし ant 自体に明るくないようでしたらまず ant のドキュメントを読んだ方がいいかもしれません。
仰るとおりです。勉強してきます。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2006-12-30 13:14
引用:

>>ただ、{tomcat.home}を指定していないのでエラーにはなると思います。
>思う、とは? エラーになっているのですか?エラーになっていないのですか?
エラーになっていません。
まずウェブページのものをそのままコピペしてAntビルドを実行したら、
  ${tomcat.home}/server/lib がありません。
という内容のエラー1行だけがEclipseコンソールに出力されたので、その部分だけを直しました。
 訂正前)<fileset dir="${tomcat.home}/server/lib">
 訂正後)<fileset dir="${basedir}/cls/WEB-INF">


エラーになってるじゃないですか。
その訂正は間違いです。
build.xmlの頭のほうにでも
コード:
<property name="tomcat.home" value="Tomcatのインストールディレクトリ" />


を定義してやれば動きませんか?

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