【问题标题】:Servlet can't find the file specifiedServlet 找不到指定的文件
【发布时间】:2017-06-14 02:27:53
【问题描述】:

请帮助我。我是 java 新手,尤其是 java web (JSP)。

所以在我尝试登录时,servlet 类将首先调用我的配置类来配置 log4j 配置文件。

这是我的项目树:

这是我的代码:

  1. 登录小服务程序

    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);
    }
    
  2. 主配置

    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

标签: java jsp servlets


【解决方案1】:

可以读取配置文件等资源

  1. 文件系统。不建议这样做,因为该文件通常不会成为已部署 WAR 的一部分,因此必须单独处理(当您不知道部署后它在文件系统中的什么位置时)。
  2. 类路径。确保构建过程将文件复制到部署的类路径(.class 文件结束的同一目录)。然后可以通过java.lang.Class.getResourcejava.lang.Class.getResourceAsStream 访问该文件。
  3. WEB 内容,例如WEB-INF 文件夹中的某处,以避免将文件传递给客户端。然后可以通过javax.servlet.ServletContext.getResourcejavax.servlet.ServletContext.getResourceAsStream 访问它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2020-02-20
    • 2021-04-19
    相关资源
    最近更新 更多