- PR -

JSPファイルの事前コンパイルについて

1
投稿者投稿内容
pinetree
会議室デビュー日: 2002/05/22
投稿数: 4
投稿日時: 2002-09-27 15:19
[環境について]
OS Solaris 2.6
JDK J2SE 1.4.0_01
Servletコンテナ Tomcat 4.0.4

皆さんこんにちは。JSPファイルの事前コンパイルについてわからない
ことがあるのですが、お知恵をお借りしたいのですが。

Tomcat4.0.4でWEBページを作っていますが、JSPのコンパイルを事前に
行いたいので、$CATALINA_HOME/bin/jspc.sh を使用して、JSPファイルを
javaソースにコンパイルし、$JAVA_HOME/bin/javac を使用してjavaソース
をコンパイルしてclassファイル(サーブレット)を作成しています。

これを$CATALINA_HOME/work以下に置くことで正常に動作はするのですが、
Tomcatが作成するものと比べるとclassファイルのバイナリが一致しません。
(javacの"-g", "-target"オプション等も試しましたが駄目でした)

JDK1.2もインストールしているので、試しにJDK1.2のjavacでjavaソースを
コンパイルしたところ、何故かバイナリが一致しました。

まさかTomcatもJDK1.2のjavacを使用しているのでは?と思い、JDK1.4.0_01の
$JAVA_HOME/lib/tools.jar をリネームしたところ、TomcatはJSPのコンパイル
が出来なくなったので、TomcatがJDK1.4.0_01のjavacを使用していることは
間違いなさそうです。

どのようにコンパイルすれば、JDK1.2を使用せずに、Tomcatが作成するものと
同一のclassファイルを作成することができるでしょうか?
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-09-28 12:43
jspc.sh を実行している環境で見える javac が jdk1.2 なんじゃないですか?
JAVA_HOME および PATH を確認しましょう。

# ちなみに jsp のプリコンパイルは http://<JSPURL>?jsp_precompile へのアクセスでも行えます:)
pinetree
会議室デビュー日: 2002/05/22
投稿数: 4
投稿日時: 2002-09-30 10:58
To:しょむさん

回答ありがとうございます。まず、Tomcat自身は、jspc.shは使用しません。
またTomcatの起動時に、JAVA_HOMEは1.4.0_01に設定しており、javacへの
パスはTomcatの起動スクリプト内でJAVA_HOMEを元に生成しているようです。

Tomcatのjspc.shはJSPファイルをJAVAソースに変換するところまでしか
やってくれません。そのため、そのJAVAソースを別途javacでコンパイル
しなければなりません。尚、javacは絶対パスで呼び出しています。

また、JSPファイルはWEB-INF以下に置き、サーブレットから呼び出す仕様
にしているため、http://<JSPURL>?jsp_precompileにてアクセスできません。
また、コンパイルはTomcatが起動していない状態で行いたいのです。

もう一度JAVA_HOME, PATH等を調べてみます。
1

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