2

我在 Java Web 应用程序中使用 Log4j。

现在,当我运行该 Web 应用程序的 servlet 时,这是我得到的错误消息——

描述 服务器遇到一个内部错误 () 阻止它完成这个请求。

例外

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-INF/lib你的 web 应用程序的目录中,或者可能放在你的 servlet 容器的库路径中。

于 2012-08-07T13:19:14.950 回答