• 締切済み

サーブレットが動かなくなりました・・・

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)

  • Java
  • 回答数2
  • ありがとう数4

みんなの回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

環境変数のクラスパスでは御座らんよ、って、どなたかが言うてるじゃん。 BもTomcatでAと同バージョンですか? common/libに、servlet-api.jarはありますか?(A,Bとも)

alfav6
質問者

お礼

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

alfav6
質問者

補足

回答いただきありがとうございます。 tomcatはA、B共に同バージョンです。 A、B共にcommon/libにservlet-api.jarはあります。 素人な質問で恐縮ですが、 tomcatのクラスパスはcatalina.shで確認すれば良いのでしょうか?

noname#49428
noname#49428
回答No.1

トレースを見る限り、javax.servlet.http.HttpServlerのクラスが見つからないんでしょうな。 Tomcatのクラスパスをご覧あれ。 環境変数のクラスパスでは御座らんよ。

alfav6
質問者

お礼

回答いただきありがとうございます。 texjoyさんの仰るとおり javax/servlet/http/HttpServletが見つからないことが サーブレットが動かなくなった原因だと思いますが、 今まで動いていたのになぜHttpServletが見つからなくなったのかが よく分かりません。 因みに、setclasspath.shに書いてあるクラスパスは以下になります。 CLASSPATH=$CLASSPATH:"$JAVA_HOME"/lib/tools.jar

関連するQ&A

  • 「サーブレットインスタンスを割り当て中のエラーです」の原因は見当がつく?

    サーブレットを勉強している初心者です。下記のようなエラーが出ているのですが、原因に見当がつく方がいたらよろしくお願いします。 javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) java.lang.Thread.run(Unknown Source) 原因 java.lang.NoClassDefFoundError: day07/Shop_ItemList (wrong name: Shop_ItemList) java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(Unknown Source) java.security.SecureClassLoader.defineClass(Unknown Source) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1626) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:850) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1299) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) java.lang.Thread.run(Unknown Source)

  • サーブレットを動かすためには?

    Tomcat5.0を使ってサーブレットを動かそうとしましたが、動きません。 JSPは問題なく動きます。 サーブレットのコンパイルは問題なくできているようです。また、ほかで動いていたものをためしに使ってみたのですが、動きません。 何か、設定をしなければならないのでしょうか。 現在は、サーブレットを動かそうとすると、 HTTPステータス 500 - type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: パス /yoko/servlet/test にサーブレットインスタンスを割り当てられません org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:388) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 原因 java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class test with modifiers "" sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57) java.lang.Class.newInstance0(Class.java:302) java.lang.Class.newInstance(Class.java:261) org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:369) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) このように表示されています。 何が原因なのか、対処策など、わかることがありましたらお教えください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • MySQLとEclipseの接続方法について

    みなさん初めまして。 SQLについて只今勉強中の者です。 EclipseとMySQLを接続したいのですが、どうしても接続できません。 利用環境 apache-tomcat-6.0.36 MySQL5.5 Windowsはxpです。 apache-tomcat-6.0.36を利用しており、JDBCドライバをダウンロード後、Tomcat内のcommon\lib内にmysql-connector-java-5.1.22-binを導入し、環境変数でパスを通しています。 TomcatとEclipseの接続は確認しています。 また、MySQLについては起動確認や、データベース作成は行えました。 原因のjava.lang.ClassNotFoundException: com.mysql.jdbc.Driverから、JDBCドライバにパスが通っていないため接続が出来ていないと考えております。 初歩的な質問かもしれませんが宜しくお願い致します。 以下は実行した際に表示された内容です。 HTTPステータス 500 - -------------------------------------------------------------------------------- type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 原因 javax.servlet.ServletException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794) org.apache.jsp.admin_jsp._jspService(admin_jsp.java:108) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 原因 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:186) org.apache.jsp.admin_jsp._jspService(admin_jsp.java:66) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 注意 原因のすべてのスタックトレースは、Apache Tomcat/6.0.32のログに記録されています -------------------------------------------------------------------------------- Apache Tomcat/6.0.32 以上です、宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 外部ライブラリについて

    Java初心者です・・。 eclipse上で、以下のソースで実行したところ、エラーになりました。 外部のライブラリを使用しているからかと思い、ビルド・パスを設定しました。 しかし・・・まだエラーが表示されます・・・。 どなたかご存知の方・・・アドバイスをお願いします。 [ソース] import javax.swing.*; import java.awt.*; class FusenExec { static public void main(String[] args) { String msg =JOptionPane.showInputDialog ("メッセージを入力して下さい。"); Dodai fusen = new Dodai(); JLabel label = new JLabel(msg); label.setOpaque(true); label.setBackground( Color.YELLOW); fusen.add(label); fusen.setSize(300, 50); fusen.setVisible(true); } } [エラー内容] Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at FusenExec.main(FusenExec.java:10)

    • ベストアンサー
    • Java
  • サーブレットインスタンスを割り当て中のエラー

    Ecripse + Tomcat で、インターフェースの実装をさせましたら、下記のエラーが出てしまいました。 インターフェースの実装を外したのですが、同じエラーのままで、わからなくな ったので、プロジェクトを最初から作り直しましたが、同じエラーが消えなくなってしまい ました。 原因や調べ方をご教授ください。 -------------------------------------------------- HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:625) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:163) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) (省略) root cause java.lang.UnsupportedClassVersionError: control/LoginServlet (Unsupported major.minor version 49.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) (省略) --------------------------------------------------

    • ベストアンサー
    • Java
  • eclipseで、サーブレットを作成したいのですが・・・

    プログラム経験の全くない、初心者なので分からない事だらけなため、どなたかおわかりになる方がおられたら、対処法をお願いします・・。 以下の手順で、サーブレットを作成しようとすると、エラーが表示され、ファイルが作成されませんでした。 [手順] (1)eclipse3.3で、「パッケージエクスプローラー」では何も選択しない状態で、メニューから「ファイル」→「新規」→「その他」を起動して、ツリーの「web」を開き、「サーブレット」を選択。 (2)サーブレット作成画面で、「パッケージ名」は、jp.co.gihyo.step3で、「名前」は、SampleServletと指定。 (3)ダイアログ画面はそのまま (4)次の画面もそのまま。 これで、「終了」を押すと、以下のエラーが表示されました。 java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:3(以下略) そこで、java.lang.UnsupportedClassVersionError: Bad version number in .class file を調べると、 「クラスが要求しているバージョンがJavaVMがサポートしているバージョンの範囲外なので、実行できない。」 だそうですが、現在のJavaVMのバージョンは、コマンドプロンプトで、「java -version」と書くと、「java version "1.6.0_06"」とありました。このバージョンでは、サーブレットが作成されないのでしょうか?それとも違う意味なのでしょうか?? あと、現在のeclipseの設定は、jdk6.0,jre1.6.0_03です。 長くなりましたが、対処法が分からず、困っています・・・。 どなたか、アドバス、お願い致します・・・。

    • ベストアンサー
    • Java
  • java実行時のメッセージについて

    50歳にてjavaを勉強しようとしているものです。 javaの本より例題を作成してみたのですが、うまくいきません。 javaをインストールしてjavacが正常でいざ実行した際、以下のメッセージが表示されました。何の意味かさっぱりわかりません。このサイトで質問するレベルではないかと思いますが、アドバイスいただければ幸いです。 作成したプログラムは class hello { public static void main(String[] args) { System.out.println("こんにちは"); } } javac ではエラー表示なし → C:\javabook\part1>javac Hello.java C:\javabook\part1> これを実行すると、 C:\javabook\part1>java Hello Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: he llo) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 1) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: Hello. Program will exit. と表示されます。 何がエラーとなっているのでしょうか?

    • ベストアンサー
    • Java
  • javaでscalaのクラスを使う

     Scala初心者です^^  Scalaで作ったクラスをJavaで使おうとしています.  しかしなかなかうまくいかなくて…  ソースを下に書いておきます. [ap/hello.scala] class hello(str2: String){ val str = str2 def say(){ println(str) } } [ap/start.java] public class start{ public static void main(String[] args){ hello h = new hello("Hello!"); h.say(); } }  helloクラスのコンストラクタを用いて指定した文字列を helloクラスのsayメソッドで標準出力するだけの簡単なクラスなのですが, うまく実行できず… Exception in thread "main" java.lang.NoClassDefFoundError: ap/start/class Caused by: java.lang.ClassNotFoundException: ap.start.class at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Kazus-MackBookPro:ScalaLearning macuser$ java ap/start Exception in thread "main" java.lang.NoClassDefFoundError: ap/start (wrong name: start) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) というエラーが出てしまいます.    どこが悪いかわかる方いらっしゃいませんか?  それとも,JavaではScalaで作った.classファイルは使うことができないのでしょうか?  Scalaはまだ覚えて2週間なので,まだ完全に理解できていません><    よろしくお願いします

  • サーブレットインスタンスを割り当てられません・・・とは

    データベースを作成中にサーブレットでのエラーがどうしてもわかりません・・・。 設定のファイル(web.xmlやserver.xml)のファイルがおかしいのか、サーブレットの配置がおかしいのか、プログラム自体がおかしいのか・・・どうなのでしょうか? エラーは以下のように出るんですが・・・ HTTPステータス 500 - -------------------------------------------------------------------------------- type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: パス /rits/servlet/rits.SrvMain にサーブレットインスタンスを割り当てられません org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:388) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 原因 java.lang.OutOfMemoryError: Java heap space 注意 原因のすべてのスタックトレースは、Apache Tomcat/5.5.20のログに記録されています -------------------------------------------------------------------------------- Apache Tomcat/5.5.20 sampleのサーブレットなどはちゃんと表示されるのですがどうしてでしょうか・・?? 原因などがわかれば教えてください。 ちなみにweb.xmlはinvokerを有効にして使っています。 よろしくおねがいします。

  • webアプリが動かなくなりました。どこが原因か教えてください

    webアプリが動かなくなりました。どこが原因か教えてください エクリプスでソースのビルドパスを除外し、web.xmlをいじった後 元に戻したら動かなくなりました。 「サーブレット○○は現在利用できませんや ブラウザにはサーブレット○○が利用できません など出てきます。 原因をさがしたけどわかりませんでした。 環境は jdk1.6 eclipse3.2 posgre8.3 tomcat6.0 です。 エクリプスコンソールログ 情報: Server startup in 2894 ms 2010/05/04 20:57:20 org.apache.catalina.core.ApplicationContext log 情報: サーブレット Sample1 を利用不可能にマークします 2010/05/04 20:57:20 org.apache.catalina.core.ApplicationContext log 致命的: Error loading WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: org.apache.catalina.loader.StandardClassLoader@123b25c info.searchman.Sample1 java.lang.ClassNotFoundException: info.searchman.Sample1 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 中略 ブラウザ javax.servlet.ServletException: ラッパがサーブレットクラス info.searchman.Sample1 又はそれが依存するクラスを見つけることができません org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) java.lang.Thread.run(Unknown Source)

    • ベストアンサー
    • Java

専門家に質問してみよう