1

私は新しい春の MVC アプリをデプロイしようとしています。何十回も実行しましたが、今では本当に奇妙なエラーが発生し、何が起こっているのかさえわかりません。

  1. javaee-api が servlet-api と競合しています。コンソールには次のように書かれています。

       INFO: validateJarFile(E:\development\workspace\conference\src\main\webapp\WEB-    INF\lib\javaee-api-6.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2.
       Offending class: javax/servlet/Servlet.class
    

そうですね、これは警告ですが、この jar は読み込まれておらず、必要です。また、アプリケーション ライブラリなどに servlet-api jar がありません。

  1. また、コンソールは次のような例外をスローします。

     SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
     java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
    

つまり、このjarはJSFとそのすべてを参照しています。私はそれをまったく使用していません。どこでそのようなクラスを取得しようとする必要がありますか? O_o

Tomcat 7でアプリを実行しています

何が起こっているのですか?

4

2 に答える 2

2

jar ファイルの問題は、Tomcat のクラスローダーがすべてのクラスを検証し、JVM にロードすることです。あなたの場合、それはサーブレット API からのクラスに直面していました - javax.servlet.Servlet。アプリケーション コードの 内にそのようなクラスを含めないでくださいWEB-INF/lib。これらのクラスは、サーブレット コンテナ自体に同梱されています。Maven を使用する場合は、 のスコープを に変更するだけjavax.servlet:servlet-apiですprovided

これを修正したら、アプリ全体をリロードしてみてください。クラスローダーがjavaee-api-6.0.jar完全にブロックされ、そこから他のクラスをロードできなくなる可能性があるためです。

于 2013-02-23T22:57:53.023 に答える
0

依存関係javaee-api-6.0.jarでスコープを設定することにより、webapps の WEB-INF/lib ディレクトリからファイルを削除できます。provided

この仕様は、サーブレット コンテナ (ここでは Tomcat) が Java EE 仕様の実装クラスを提供することを示しています。アプリケーション固有の実装を持つことは、仕様/Tomcat で許可されていない安定性とセキュリティの問題です。

ありがとう!

于 2013-02-24T16:05:50.213 に答える