【发布时间】:2017-06-14 02:27:53
【问题描述】:
请帮助我。我是 java 新手,尤其是 java web (JSP)。
所以在我尝试登录时,servlet 类将首先调用我的配置类来配置 log4j 配置文件。
这是我的项目树:
这是我的代码:
-
登录小服务程序
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ System.out.println("Before Starting..."); MainConfiguration.loadConfiguration(); response.setContentType("text/html"); RequestDispatcher rd=request.getRequestDispatcher("home.jsp"); rd.forward(request, response); } -
主配置
public static void loadConfiguration() { // To configure place of logger settings file PropertyConfigurator.configure("configuration/logger_dev.conf"); }
所以当我尝试运行项目并尝试登录时,它会引发错误。
Before Starting...
log4j:ERROR Could not read configuration file [configuration/logger_dev.conf].
java.io.FileNotFoundException: configuration\logger_dev.conf (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.utility.MainConfiguration.loadConfiguration(MainConfiguration.java:47)
at com.controller.LoginServlet.doPost(LoginServlet.java:20)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
log4j:ERROR Ignoring configuration file [configuration/logger_dev.conf].
但是当我尝试使用 java main 调用我的配置类时,它工作正常。
请就如何让它在 servlet 上工作提出建议。谢谢。
【问题讨论】:
-
您的文件正在尝试从 WebContent 文件夹加载,可能
-
@cricket_007 我尝试将我的配置文件夹复制到 WebContent 文件夹中,但仍然无法正常工作。
-
您需要将文件放在类路径上。尝试将其放在类路径上的文件夹中,如源文件夹,单击项目属性并查看类路径中的文件夹并选择一个放置配置开启。
-
除了 src 文件夹永远不会在构建的 Eclipse 项目(尤其是 Web 项目)的类路径中,所以就是这样
-
另外,图片显示文件位于
configuration/db/logger_dev.conf,而不是configuration/logger_dev.conf