2

JavaWebアプリでLog4jを使用しています。

さて、そのWebアプリのサーブレットを実行すると、これは私が受け取るエラーメッセージです-

説明サーバーで内部エラー()が発生したため、この要求を実行できませんでした。

例外

javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.NoClassDefFoundError: org/apache/log4j/Logger
com.test.ConfigHelper.<clinit>(ConfigHelper.java:45)
com.test.runsinglecrawljob.doGet(runsinglecrawljob.java:126)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause


java.lang.ClassNotFoundException: org.apache.log4j.Logger
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533)
com.test.ConfigHelper.<clinit>(ConfigHelper.java:45)
com.test.runsinglecrawljob.doGet(runsinglecrawljob.java:126)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

これで、ConfigHelper.javaのコード行(45行目)が次のようになります---

protected static final Logger log = Logger.getLogger(ConfigHelper.class);

Javaビルドパスを確認しました-log4jのJARファイルがビルドパスに追加されました。

私はここで何が間違っているのですか?log4jを問題なく動作させるにはどうすればよいですか?

4

1 に答える 1

11

Java ビルド パスを確認しました。log4j の JAR ファイルがビルド パスに追加されています。

ビルドパスの一部であるだけでは十分ではありません。たとえば、Web アプリケーションのディレクトリに配置するか、場合によってはサーブレット コンテナーのライブラリ パスに配置して、実行時に使用できるようにする必要があります。WEB-INF/lib

于 2012-08-07T13:19:14.950 に答える