プロが教えるわが家の防犯対策術!

Apache+Tomcatで環境(以後、環境A)を作り
Webアプリが正常に動いていたのですが、
別の環境(以後、環境B)で動いていたWebアプリを
環境Aの$CATALINA_HOME/webapps以下にコピーしたところ
下記のエラーが出てサーブレットが動かなくなってしまいました。
(JSPは動きます)

動作環境は以下になります。
OS:Redhat Enterprise Linux AS4 Update5
Tomcat:5.5.25
JDK:1.6.0_03

環境A、B共に同環境で
Webアプリも同じものが動いていました。

対処法の分かる方がいらっしゃいましたら
よろしくお願いします。

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:620)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
java.net.URLClassLoader.access$000(URLClassLoader.java:56)
java.net.URLClassLoader$1.run(URLClassLoader.java:195)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(URLClassLoader.java:188)
java.lang.ClassLoader.loadClass(ClassLoader.java:306)
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
java.lang.ClassLoader.loadClass(ClassLoader.java:251)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1277)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:370)
org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:134)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

A 回答 (2件)

トレースを見る限り、javax.servlet.http.HttpServlerのクラスが見つからないんでしょうな。


Tomcatのクラスパスをご覧あれ。
環境変数のクラスパスでは御座らんよ。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。

texjoyさんの仰るとおり
javax/servlet/http/HttpServletが見つからないことが
サーブレットが動かなくなった原因だと思いますが、
今まで動いていたのになぜHttpServletが見つからなくなったのかが
よく分かりません。

因みに、setclasspath.shに書いてあるクラスパスは以下になります。
CLASSPATH=$CLASSPATH:"$JAVA_HOME"/lib/tools.jar

お礼日時:2007/11/06 18:24

環境変数のクラスパスでは御座らんよ、って、どなたかが言うてるじゃん。


BもTomcatでAと同バージョンですか?
common/libに、servlet-api.jarはありますか?(A,Bとも)

この回答への補足

回答いただきありがとうございます。

tomcatはA、B共に同バージョンです。
A、B共にcommon/libにservlet-api.jarはあります。

素人な質問で恐縮ですが、
tomcatのクラスパスはcatalina.shで確認すれば良いのでしょうか?

補足日時:2007/11/06 21:13
    • good
    • 0
この回答へのお礼

startup.sh内のcatalina.shを実行しているところで
catalina.shの第二引数に "javac"を追加し、
catalina.sh内のsetclasspath.shを実行しているところに
第二引数を渡すようcatalina.shとsetclasspath.shを
編集したら無事サーブレットが動くようになりました。

お礼日時:2007/11/06 23:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!