Tomcatのサンプルを実行すると以下のようなエラーが出てしまいます。
(しかも昔は特に設定は変更していないのですが動いていたと思います)
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: JSPのクラスをコンパイルできません
JSPファイル: null の中の行: -1でエラーが発生しました
生成されたサーブレットのエラーです:
[javac] Since fork is true, ignoring compiler setting.
[javac] Compiling 1 source file
[javac] Since fork is true, ignoring compiler setting.
[javac] java.lang.NoClassDefFoundError: com/sun/tools/javac/Main
[javac] Exception in thread main
at org.apache.jasper.compiler.DefaultErrorHandler.javacError
(DefaultErrorHandler.java:130)
at org.apache.jasper.compiler.ErrorDispatcher.javacError
(ErrorDispatcher.java:293)
----------------------------------------------------------------------
Tomcatを起動すると
2003/05/20 6:47:36 org.apache.commons.digester.Digester error
致命的: Parse Error at line 32 column 11: The content of element type web-app
must match (icon?,display-name?,description?,distributable?,context-param*,serv
let*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-pag
e*,taglib*,resource-ref*,security-constraint*,login-config?,security-role*,env-e
ntry*,ejb-ref*).
org.xml.sax.SAXParseException: The content of element type web-app must match
(icon?,display-name?,description?,distributable?,context-param*,servlet*,servle
t-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,
resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-r
ef*).
等と、
致命的なエラーが出ているようです。
どなたかこのような現象をご存知でしょうか?
tomcat4.1.24
JDK1.4.1_02
この現象については、よく分かりませんが、
web.xmlファイルの32行目の11列にエラーがあり、
<web-app>の子要素として使用できる<icon>,<display-name>,...
以外の要素があると出ています。
この点については確認なさいましたか。
dairygoodsさん。ご返答感謝です。
しかし、web.xmlを確認してみたのですが、特に間違っている箇所はなさそうです。
ためしに同じバージョンのTomcatをダウンロードして実行したところ
なぜか致命的以下のエラーが消えました。
でも、サンプル実行時の以下のエラーは同じように出ました。
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: null の中の行: -1でエラーが発生しました
生成されたサーブレットのエラーです:
[javac] Since fork is true, ignoring compiler setting.
[javac] Compiling 1 source file
[javac] Since fork is true, ignoring compiler setting.
[javac] java.lang.NoClassDefFoundError: com/sun/tools/javac/Main
[javac] Exception in thread main
設定がおかしいのか、環境系の問題なのかもしれません。
> [javac] java.lang.NoClassDefFoundError: com/sun/tools/javac/Main
JDKに付属の tools.jar にクラスパスが通っていないのかもしれません。
確認したところ、クラスパスは以下のようになっています。
CLASSPATH=.;D:\j2sdk1.4.1_02\lib\tools.jar;D:\j2sdkee1.3.1\lib\j2ee.jar;D:\jakar
ta-tomcat-4.1.24\common\lib\servlet.jar;
tools.jarにクラスパスが通っていないという理由ではないようです。
最近、プログラム自体書いてなかったのですがjavacコマンド自体が
ちゃんと動かなくなっていることに気づきました。
javacコマンドを打つとこのようになってました。
D:\Java\>javac Hello.java
Exception in thread main java.lang.NoClassDefFoundError: com/sun/tools/javac/M
ain
この前まで動いていたはずなのに...
java -version
を行ってみて、自分の実行しているJavaのVM、コンパイラ
を確認してみた方がよいかもしれません
Tomcat4.1の場合、CLASSPATHはみていません。
JAVA_HOMEを取得後内部で生成したクラスパスを用いているため
外部のクラスパスをいくらいじっても反省されないので
注意が必要です。
java -versionをやってみましたが、正常のようです。
java version 1.4.1_02
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_02-b06)
Java HotSpot(TM) Client VM (build 1.4.1_02-b06, mixed mode)
すぐ時間がとれないのですが、JDKの再インストールも試してみようと思います。
解決しました。
dairygoodsさんのいわれた↓が原因でした。
>JDKに付属の tools.jar にクラスパスが通っていないのかもしれません。
クラスパスは確認したのですがなんと、tools.jarの名前を
自分で変更していました。みなさんありがとうございました。
ところでtools.jarをtools.jar.zipに変えていました。
というのもzipに変えるとダブルクリックで簡単に中身が見れるからです。
みなさんはどのようにjarファイルの中身を確認していますか?
> みなさんはどのようにjarファイルの中身を確認していますか?
私の場合、たいていは解凍してしまいます。
拡張子に関係なく解凍可能なツールがあると便利です。
たとえば、
http://member.nifty.ne.jp/beambitious/
情報ありがとうございます。eo使ってみました。でも僕が持っているものと使い勝手的に
はかわらないようです。
理想は、LHAユーティリティ32みたいにどこかに解凍しなくても中身が
みれるのがいいですね。これで拡張子がZipのものは思い通りにいくんですけど
拡張子がjarとかだとLZH形式と判断されてしまい解凍できないんです。
ウィンドウズXPでZIPファイルをダブルクリックしたときの動きも良いですね。
ないものねだりですかね~。
> ウィンドウズXPでZIPファイルをダブルクリックしたときの動きも良いですね。
それならば、.jarを.zipと同様の関連付けにすれば可能です。
フォルダオプションからはそのような細かい設定はできないので、
レジストリを直接操作することになります。
HKEY_CLASS_ROOT\.zip 以下の内容を
HKEY_CLASS_ROOT\.jar 以下にコピーすればOKです。
>HKEY_CLASS_ROOT\.zip 以下の内容を
>HKEY_CLASS_ROOT\.jar 以下にコピーすればOKです。
なるほど~、jarファイルも↑のようにやれば関連付けできるんですね~。
さっそくやってみました。Javaとはあまり関係のない話題なのにつきあってもらってあり
がとうございました。