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ライブラリが含まれています。
特にプロジェクトが別のコンピューターで正常に機能していたため、問題について非常に混乱しています。この問題に関するどんな助けも高く評価されます。
ナフタル
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ファイルがあることを確認してください。
Reticulogicの2番目の提案は正しいです。ただし、Eclipse Heliosでは、「Java EEモジュールの依存関係」オプションが削除されました。 Heliosの修正は次のとおりです。
簡単な解決策は、EclipseでTomcatディレクトリをクリーンアップすることです。それは私のために働いた。
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依存関係]ボックスがオンになっていることを確認します。
次に、保存してビルドを展開します。
Log4j2を使用する場合、これらのクラスは次の場所にあります。
org.Apache.logging.log4j.web.*
パッケージ。