- 締切済み
サーブレットが動かなくなりました・・・
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)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- _ranco_
- ベストアンサー率58% (126/214)
環境変数のクラスパスでは御座らんよ、って、どなたかが言うてるじゃん。 BもTomcatでAと同バージョンですか? common/libに、servlet-api.jarはありますか?(A,Bとも)
トレースを見る限り、javax.servlet.http.HttpServlerのクラスが見つからないんでしょうな。 Tomcatのクラスパスをご覧あれ。 環境変数のクラスパスでは御座らんよ。
お礼
回答いただきありがとうございます。 texjoyさんの仰るとおり javax/servlet/http/HttpServletが見つからないことが サーブレットが動かなくなった原因だと思いますが、 今まで動いていたのになぜHttpServletが見つからなくなったのかが よく分かりません。 因みに、setclasspath.shに書いてあるクラスパスは以下になります。 CLASSPATH=$CLASSPATH:"$JAVA_HOME"/lib/tools.jar
お礼
startup.sh内のcatalina.shを実行しているところで catalina.shの第二引数に "javac"を追加し、 catalina.sh内のsetclasspath.shを実行しているところに 第二引数を渡すようcatalina.shとsetclasspath.shを 編集したら無事サーブレットが動くようになりました。
補足
回答いただきありがとうございます。 tomcatはA、B共に同バージョンです。 A、B共にcommon/libにservlet-api.jarはあります。 素人な質問で恐縮ですが、 tomcatのクラスパスはcatalina.shで確認すれば良いのでしょうか?