2017-06-14 14 views
0

私を助けてください。私はJava、特にJava Web(JSP)を初めて使っています。サーブレットが指定されたファイルを見つけることができません

私の場合、ログインしようとすると、サーブレットクラスはまずlog4j構成ファイルを構成する構成クラスを呼び出します。ここで

は私のプロジェクトツリーです:

enter image description here

とここに私のコードです:

  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. MainConfiguration

    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を使って自分の設定クラスを呼び出そうとしているとき、うまくいきます。

サーブレットで動作させる方法をお勧めします。ありがとう。コンフィギュレーション・ファイルのような

+0

あなたのファイルは、おそらく –

+0

cricket_007 @私はWebContentフォルダー内の私の設定フォルダをコピーしようとしたが、それでも動作しない、WebContentフォルダーからロードされるようにしようとしています。 – Ikhsan

+1

ファイルをクラスパスに配置する必要があります。ソースフォルダーのようにクラスパス上にあるフォルダーに配置する必要があります。プロジェクトプロパティーをクリックし、クラスパスのどのフォルダーを参照して構成を入れるかを選択します。 –

答えて

0

リソースが

  1. ファイルシステムから読み取ることができます。ファイルは通常、デプロイされたWARの一部ではないため、別々に処理する必要があります(デプロイメント後にファイルシステムがどこに終了するのかわからない場合)。
  2. クラスパス。ビルドプロセスがファイルを展開されたクラスパス(ファイルが終わるところの.classと同じディレクトリ)にコピーすることを確認してください。ファイルはjava.lang.Class.getResourceまたはjava.lang.Class.getResourceAsStreamでアクセスできます。
  3. WEBコンテンツ。ファイルがクライアントに配信されないようにするには、WEB-INFフォルダーのどこかにコピーします。その後、javax.servlet.ServletContext.getResourceまたはjavax.servlet.ServletContext.getResourceAsStreamでアクセスできます。
関連する問題