web-dev-qa-db-ja.com

Log4jConfigListenerが見つかりません-コンテキストの開始に失敗しました

EclipseでWebアプリケーションをセットアップしようとしています。 Tomcat 6.0とjdk 1.6.0_23を使用しています。何らかの理由でこのエラーが発生します:

重大:org.springframework.web.util.Log4jConfigListener 
 Java.lang.ClassNotFoundException:org.springframework.web.util.Log4jConfigListener 
クラスのアプリケーションリスナーを構成するときにエラーが発生しましたApache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1645)
 org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1491)
 at org.Apache。 catalina.core.StandardContext.listenerStart(StandardContext.Java:4078)
 at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4630)
 at org.Apache.catalina。 core.ContainerBase.start(ContainerBase.Java:1045)
 at org.Apache.catalina.core.StandardHost.start(StandardHost.Java:785)
 at org.Apache.catalina.core。 ContainerBase.start(ContainerBase.Java:1045)
 at org.Apache.catalina.core.StandardEngine.start(StandardEngine.Java:445)
 at org.Apache.catalina.core.StandardService。 start(StandardService.Java:519)
 at org.Apache.c atalina.core.StandardServer.start(StandardServer.Java:710)
 at org.Apache.catalina.startup.Catalina.start(Catalina.Java:581)
 at Sun.reflect.NativeMethodAccessorImpl。 invoke0(Native Method)
 at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
 at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
 Java.lang.reflect.Method.invoke(Method.Java:597)
 at org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:289)
 at org.Apache .catalina.startup.Bootstrap.main(Bootstrap.Java:414)
 2011年1月24日11:44:08 AM org.Apache.catalina.core.StandardContext listenerStart 
重大:アプリケーションの設定エラークラスorg.springframework.web.context.ContextLoaderListener 
 Java.lang.ClassNotFoundExceptionのリスナー:org.Apache.catalina.loader.WebappClassLoader.loadClass(のorg.springframework.web.context.ContextLoaderListener 
 WebappClassLoader.Java:1645)
 at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1491)
 at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4078)
 at org .Apache.catalina.core.StandardContext.start(StandardContext.Java:4630)
 org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1045)
 at org.Apache .catalina.core.StandardHost.start(StandardHost.Java:785)
 at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1045)
 at org.Apache.catalina .core.StandardEngine.start(StandardEngine.Java:445)
 at org.Apache.catalina.core.StandardService.start(StandardService.Java:519)
 at org.Apache.catalina.core .StandardServer.start(StandardServer.Java:710)
 at org.Apache.catalina.startup.Catalina.start(Catalina.Java:581)
 at Sun.reflect.NativeMethodAccessorImpl.invoke0(Nativeメソッド)
 at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
 at Sun .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
 at Java.lang.reflect.Method.invoke(Method.Java:597)
 at org.Apache.catalina.startup.Bootstrap .start(Bootstrap.Java:289)
 at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:414)

すべてのライブラリがビルドパスに追加され、すべてが正しいように見えるかどうかを確認しました。 log4j-1.2.15.jarと、必要なすべてのSpringライブラリが含まれています。

特にプロジェクトが別のコンピューターで正常に機能していたため、問題について非常に混乱しています。この問題に関するどんな助けも高く評価されます。

ナフタル

13
1000Suns

Org.springframework.web.util.Log4jConfigListenerクラスがクラスパスに含まれていないことは明らかです。

最初に私が提案することは、このクラスを妨げているコンテナで何が起こっているのかを正確に確認できるように、Tomcatのログレベル(confフォルダ内)を「ALL」または「DEBUG」に上げることです。発見されないように。

次に、linux/macの場合、grepを実行して、不足しているクラスファイルがないかJARファイルを確認することをお勧めします。

  # run at the root of your lib folders:
  grep -ri "org.springframework.web.util.Log4jConfigListener" *

上記のコマンドは、そのパッケージを含むすべてのJARファイルを返します。 JARファイルが分離されたら、さらにトラブルシューティングを行うことができます。

3番目に、競合がないことを確認します。クラスパスに複数のバージョンのLog4jがあると、大混乱を引き起こします。 2つある場合、システムはどのようにロードするwhich org.springframework.web.util.Log4jConfigListenerパッケージを知っているはずですか? Tomcatには3つの異なるクラスパスフォルダーがあります。

 shared/lib
 lib
 webapps/yourapp/WEB-INF/lib

これらのフォルダーの1つにのみlog4j JARファイルがあることを確認してください。

4
jmort253

Reticulogicの2番目の提案は正しいです。ただし、Eclipse Heliosでは、「Java EEモジュールの依存関係」オプションが削除されました。 Heliosの修正は次のとおりです。

  1. Eclipseでプロジェクトを右クリックし、[プロパティ]-> [デプロイメントアセンブリ]に移動します。
  2. 「追加...」をクリックします
  3. 「Java Build Path Entries」を選択し、「Next」をクリックします
  4. 「Maven Dependencies」を選択し、「Finish」をクリックします
41
Templar

簡単な解決策は、EclipseでTomcatディレクトリをクリーンアップすることです。それは私のために働いた。

4
user3331355

MavenとEclipseを使用している場合

1)Webプロジェクトの.classpathファイルを調べます。クラスパスエントリ「org.maven.ide.Eclipse.MAVEN2_CLASSPATH_CONTAINER」がある場合は、属性もそこにあることを確認してください。

<classpathentry kind="con" path="org.maven.ide.Eclipse.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="org.Eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

2)それが機能しない場合は、EclipseでWebプロジェクトを右クリックし、[プロパティ]-> [JavaEEモジュールの依存関係]に移動します。 [Maven依存関係]ボックスがオンになっていることを確認します。

次に、保存してビルドを展開します。

3
Reticulogic

Log4j2を使用する場合、これらのクラスは次の場所にあります。

org.Apache.logging.log4j.web.*

パッケージ。

0
LakiGeri