- - PR -
JSPのクラスをコンパイルできません(長文です)
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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"になってしまっています。 一体何が原因なのでしょうか・・・。 散々悩んだ挙句、皆様のお知恵を拝借したいと考え、投稿しました。 どうぞ宜しくお願い致します。 (この掲示板は円マークが化けてしまうので、スラッシュで表示しています。) | ||||||||
|
投稿日時: 2005-03-09 20:06
TOMCATのインストールディレクトリ\common\libに
tools.jarを入れてみてください。 クラスパスは特に必要ないと思います。 | ||||||||
|
投稿日時: 2005-03-09 21:16
>かつのり様
ありがとうございます。 仰るとおり、TOMCATのlibにtools.jarを入れたところ、動きました。 元はJ2sdk1.4.2_07/libにあったのですが、どうしてそこではダメなのでしょうか。。 [ メッセージ編集済み 編集者: たまこ 編集日時 2005-03-09 21:16 ] | ||||||||
|
投稿日時: 2005-03-10 00:01
実行時とコンパイル時のクラスパスの概念が違います。
TomcatがJSPをコンパイルする際に、TomcatはTomcat独自のクラスローダで ライブラリをロードしようとしているのではないでしょうか。 | ||||||||
|
投稿日時: 2005-03-10 13:02
少なくともデフォルトのTomcatの設定では、クラスパスに%JAVA_HOME%\lib\tools.jarを
設定しますので、tools.jarをcommon/libに入れる必要はありません。可能性としては、 ・catalina.batが書き換えられている ・setclasspath.batが書き換えられている ・catalina.bat以外によって起動されている といったことが考えられますが、心当たりはないでしょうか。 | ||||||||
|
投稿日時: 2005-03-10 13:58
EclipseでTomcatプラグインを使用して起動している場合は、 クラスパスの設定が変わりません。
との事ですので、恐らくプラグインを使用しているのではと思い、 common/libに入れる必要があると書きました。 | ||||||||
|
投稿日時: 2005-03-10 14:09
だとすると、これは対症療法ですので本質的な対応をしたほうがよいと思います。 プラグインを使っているのであれば、そのプラグインに設定項目があるはずですので、 そちらを確認した方がよいのではないでしょうか。 |
1