2011-01-08 15 views
0

すべてがうまくいきましたが、今はアプリケーションを実行できなくなりました。いくつかの理由のjavax。*はjava.lang.NoClassDefFoundError

exception 

javax.servlet.ServletException: Error allocating a servlet instance 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 


root cause 

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet 
java.lang.ClassLoader.defineClass1(Native Method) 
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
java.security.AccessController.doPrivileged(Native Method) 
java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 


root cause 

java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet 
java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
java.security.AccessController.doPrivileged(Native Method) 
java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
java.lang.ClassLoader.defineClass1(Native Method) 
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
java.security.AccessController.doPrivileged(Native Method) 
java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:619) 
+0

Eclipseから起動しますか?その場合は、実行コンフィギュレーションのクラスパスタブを確認します。 –

答えて

0

は、プロジェクトのクラスパスにservlet-api.jarを追加... Eclipseで輸入が細かいですまだ発見されていません。サーブレットコンテナにはこのjarがバンドルされているため、libに追加する必要はありません。

1

Apache Tomcatの「Server Runtime」ライブラリには、通常servlet-api.jarがあります。

ElcipseでServer Runtimeを定義すると、このライブラリが定義され、Tomcatにservet-api.jarへのリンクが含まれます。

ダイナミックWebプロジェクトを作成するときに、このライブラリをJavaビルドパスで定義する必要があります。プロジェクトにこのビルドパスがあるかどうかを確認します。

-2

servlet-api jarをコピーしてwebapps libディレクトリに貼り付けます。 Eclipseを右クリック - >プロパティ - > Javaのビルドパス - > "注文とエクスポート"タブを選択して、あなたのプロジェクトを選択 - >すべてを選択 - >終了します。

今すぐeclipseを使用してアプリケーションを実行します。 私はそれがうまく動作することを願っています。 まだ問題はありますか、教えてください。別の解決策を教えてください

+2

これは動作しますが、これはまったく間違った方法です。 webapps libフォルダにドロップしたlibsが作成されたもの以外のmake/versionのサーブレットコンテナにデプロイするたびに、webappが壊れます。プロジェクトのプロパティで* Target Runtime *を設定して、Eclipseが自動的にそれに注意を払う必要があります。それは、webappsのlibにservletcontainer固有のライブラリをコピーすることではありません。 – BalusC

+0

あなたがこれまでに言ったことは正しいことです。別のマシンの別のサーバーでプロジェクトを実行しようとしているとします。その時、あなたはあなたの瓶をその機械に動かさなければなりません。あなたのプロジェクトディレクトリにあなたのlibを置くなら。今度はあなたが別の機械で変わると、あなたの瓶もまた別の機械に移動します。あなたはeclipseを使って設定することもできますし、クラスパスを設定することもできますし、easlyでも動作します。ターゲットランタイムを設定すると、それが動作するようになります。ただし、別のマシンに変更すると問題になる可能性があります。 – SRIHARI

+0

問題は、完全なEclipseプロジェクトを移動する必要があることを意味します。あなたの目標のメカニックがecipseを含んでいないかもしれないと仮定してください。私の仮定が間違っているなら、WEB-INFのlibフォルダ用のWebプロジェクト構造の設計はなぜですか? (解決策を作るためには、多くの方法がありますが、私たちは自分の方法を使うことができますが、何かがうまくいくとは思っていないし、何かが間違っています。 – SRIHARI

関連する問題