- PR -

JSPのクラスをコンパイルできません(長文です)

1
投稿者投稿内容
たまこ
常連さん
会議室デビュー日: 2005/01/12
投稿数: 25
投稿日時: 2005-03-09 19:30
お世話になっております。
とても初歩的な質問かもしれませんが、ご教授お願い致します。
自端末(WindowsXP)にJ2sdk1.4.2_07、Tomcat5.0をインストールし、Eclipseにて開発を行っています。
http://localhost:8080 ではTomcatの初期ページは表示されるのですが、
自分で作成したプロジェクトを表示しようとすると、件名のエラーが返ってきます。
そのプロジェクトは、以前Linuxマシンで動いていたものです。

例えば、
http://localhost:8080/hogehoge/index.jsp のアドレスを表示しようとすると、以下のエラーが返ってきます。

------------------------------------------------------------------------------------------

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:346)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:414)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
原因
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK

org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:106)
org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:935)
org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:764)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

------------------------------------------------------------------------------------------

端末のユーザ環境変数は以下の通りです。
(PATHは通っています。コマンドプロンプトで確認しました。)
JAVA_HOME:C:/j2sdk1.4.2_07
PATH:%JAVA_HOME%/bin

Javaのクラスパスで関係のありそうな設定は以下の通りです。
JDK_TOOLS:C:/j2sdk1.4.2_07/lib/tools.jar

プロジェクトごとに設定するJavaのビルドパスで関係のありそうなjarの設定は以下の通りです。
servlet.jar:hogehoge/WEB-INF/lib
servlet-api.jar:C:/j2sdk1.4.2_07/lib

それから、Tomcatのログでstdout.logというファイルがありますが、
そこに気になるログが出ていました。

------------------------------------------------------------------------------------------

2005/03/09 03:21:42 org.apache.jasper.compiler.Compiler generateClass
致命的: Env: Compile: javaFileName=/C:/Program Files/Apache Software Foundation/Tomcat 5.0/work/Catalina/localhost/hogehoge//org/apache/jsp/index_jsp.java
classpath=/C:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/hogehoge/WEB-INF/classes/;C:/Program Files/Apache Software Foundation/Tomcat 5.0/work/Catalina/localhost/hogehoge;/C:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/hogehoge/WEB-INF/classes/;C:/Program Files/Apache Software Foundation/Tomcat 5.0/shared/classes/;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/classes/;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/endorsed/xercesImpl.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/endorsed/xml-apis.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/ant-launcher.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/ant.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-collections-3.1.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-dbcp-1.2.1.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-el.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-pool-1.2.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/jasper-compiler.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/jasper-runtime.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/jsp-api.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-common.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-factory.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-java.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-resources.jar;C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/servlet-api.jar;/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.0/bin/bootstrap.jar;/C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/dnsns.jar;/C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/ldapsec.jar;/C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/localedata.jar;/C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/sunjce_provider.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/bin/bootstrap.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/hogehoge/WEB-INF/classes
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/work/Catalina/localhost/hogehoge
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/hogehoge/WEB-INF/classes
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/shared/classes
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/classes
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/endorsed/xercesImpl.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/endorsed/xml-apis.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/ant-launcher.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/ant.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-collections-3.1.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-dbcp-1.2.1.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-el.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/commons-pool-1.2.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/jasper-compiler.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/jasper-runtime.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/jsp-api.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-common.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-factory.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-java.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/naming-resources.jar
cp=C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/servlet-api.jar
cp=C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.0/bin/bootstrap.jar
cp=C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/dnsns.jar
cp=C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/ldapsec.jar
cp=C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/localedata.jar
cp=C:/Program%20Files/Java/j2re1.4.2_07/lib/ext/sunjce_provider.jar

work dir=C:/Program Files/Apache Software Foundation/Tomcat 5.0/work/Catalina/localhost/hogehoge
extension dir=C:/Program Files/Java/j2re1.4.2_07/lib/ext
srcDir=C:/Program Files/Apache Software Foundation/Tomcat 5.0/work/Catalina/localhost/hogehoge
include=org/apache/jsp/index_jsp.java

------------------------------------------------------------------------------------------

2行目の「致命的: Env: Compile: javaFileName=/C:/Program Files/Apache Software Foundation/Tomcat 5.0/work/Catalina/localhost/hogehoge//org/apache/jsp/index_jsp.java」
hogehogeとorgの間に"/"が2本あります。

その下のclasspath=・・・部分ですが、半角スペース部分が途中から"%20"と表示されています。
また、それに関しては、cp=・・・部分も同様に、途中から半角スペースが"%20"になってしまっています。

一体何が原因なのでしょうか・・・。

散々悩んだ挙句、皆様のお知恵を拝借したいと考え、投稿しました。
どうぞ宜しくお願い致します。

(この掲示板は円マークが化けてしまうので、スラッシュで表示しています。)
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-09 20:06
TOMCATのインストールディレクトリ\common\libに
tools.jarを入れてみてください。
クラスパスは特に必要ないと思います。
たまこ
常連さん
会議室デビュー日: 2005/01/12
投稿数: 25
投稿日時: 2005-03-09 21:16
>かつのり様
ありがとうございます。
仰るとおり、TOMCATのlibにtools.jarを入れたところ、動きました。
元はJ2sdk1.4.2_07/libにあったのですが、どうしてそこではダメなのでしょうか。。


[ メッセージ編集済み 編集者: たまこ 編集日時 2005-03-09 21:16 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-10 00:01
実行時とコンパイル時のクラスパスの概念が違います。
TomcatがJSPをコンパイルする際に、TomcatはTomcat独自のクラスローダで
ライブラリをロードしようとしているのではないでしょうか。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-03-10 13:02
少なくともデフォルトのTomcatの設定では、クラスパスに%JAVA_HOME%\lib\tools.jarを
設定しますので、tools.jarをcommon/libに入れる必要はありません。可能性としては、

・catalina.batが書き換えられている
・setclasspath.batが書き換えられている
・catalina.bat以外によって起動されている

といったことが考えられますが、心当たりはないでしょうか。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-10 13:58
引用:

少なくともデフォルトのTomcatの設定では、クラスパスに%JAVA_HOME%\lib\tools.jarを
設定しますので、tools.jarをcommon/libに入れる必要はありません。可能性としては、

・catalina.batが書き換えられている
・setclasspath.batが書き換えられている
・catalina.bat以外によって起動されている



EclipseでTomcatプラグインを使用して起動している場合は、
クラスパスの設定が変わりません。

引用:

自端末(WindowsXP)にJ2sdk1.4.2_07、Tomcat5.0をインストールし、Eclipseにて開発を行っています。



との事ですので、恐らくプラグインを使用しているのではと思い、
common/libに入れる必要があると書きました。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-03-10 14:09
引用:

かつのりさんの書き込み (2005-03-10 13:58) より:
との事ですので、恐らくプラグインを使用しているのではと思い、
common/libに入れる必要があると書きました。


だとすると、これは対症療法ですので本質的な対応をしたほうがよいと思います。
プラグインを使っているのであれば、そのプラグインに設定項目があるはずですので、
そちらを確認した方がよいのではないでしょうか。
1

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