2016-06-02 18 views
0

(nach dem Durchsuchen von StackExchange) Ich kann nicht herausfinden, warum ich meine Eigenschaftendatei von einem einfachen Java class mit einer main() Methode, aber nicht von einem Java servlet laden kann. Die Ausnahme ist java.io.FileNotFoundException: resources\dbprops.properties (The system cannot find the path specified)
Könnte mir bitte jemand helfen, die Eigenschaftendatei in mein Servlet zu laden?
(Angenommen, es gibt auch andere Methoden und Importe in diesen Klassen)Warum kann ich Eigenschaften in einer Java-Anwendung, aber nicht in einem Java-Servlet laden?

Projekt Layout:

 
project\ 
    src\ 
     joerle\ 
      servlet\ 
       MyServlet.java 
      jdbc\ 
       JdbcTest.java 
    resources\ 
     dbprops.properties 

einfache Java-Klasse joerle.jdbc.JdbcTest (Lasten Eigenschaften):

 
public class JdbcTest { 
    private final String dbPropPath = "resources" + File.separator + "dbprops.properties"; 
    private Properties props; 

    public JdbcTest() { 
     try { 
      props = new Properties(); 
      props.load(new FileInputStream(dbPropPath)); 
      //do stuff 
     } catch (FileNotFoundException e) { 
      System.err.println("properties file not found"); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      System.err.println("properties file cannot be opened"); 
      e.printStackTrace(); 
     } 
    } 
    public static void main(String[] args) { 
     new JdbcTest(); 
    } 
} 

einfache Java-Servlet-Klasse joerle.servlet.MyServlet (Fehler beim Laden der Eigenschaften):

 
public class MyServlet extends HttpServlet { 
    private final String dbPropPath = "resources" + File.separator + "dbprops.properties"; 
    private Properties props; 

    public void init(ServletConfig config) throws ServletException { 
     try { 
      props = new Properties(); 
      props.load(new FileInputStream(dbPropPath)); 
      //do stuff 
     } catch (FileNotFoundException e) { 
      System.err.println("properties file not found"); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      System.err.println("properties file cannot be opened"); 
      e.printStackTrace(); 
     } 
    } 
} 

Ich habe schon versucht:
- Load properties file in servlet?
- Load properties file in Servlet/JSP
und einige andere Lösungen ...

Vielen Dank im Voraus! Hier

Antwort

0

ist die Lösung, die ich verwendet, die erfolgreich in einem Servlet-Kontext arbeitet:

  • Verschoben Properties-Datei zu projectRoot/WebContent/WEB-INF/classes/resources/dbprops.properties
  • und nannte es mit diesem:
    InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("resources/dbprop.prope‌​rties");

Hinweis, wo Die Schrägstriche sind, wenn Sie diese Lösung verwenden. Dies war eine großartige Ressource für meine Fehlersuche: Where to place and how to read configuration resource files in servlet based application?