2016-06-02 9 views
0

(после поиска StackExchange) Я не могу понять, почему я могу загрузить свой файл свойств из простого Java class с помощью метода main(), но не из Java servlet. Исключение составляет java.io.FileNotFoundException: resources\dbprops.properties (The system cannot find the path specified)
Может ли кто-то помочь мне загрузить файл свойств в мой сервлет?
(Предположим, что существуют и другие методы и импорт в этих классах)Почему я могу загружать свойства в приложение Java, но не сервлет Java?

макет

проекта:

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

Простой класс Java joerle.jdbc.JdbcTest (загружает свойства):

 
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(); 
    } 
} 

Простой класс Java Servlet joerle.servlet.MyServlet (не загружается):

 
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(); 
     } 
    } 
} 

Я уже пробовал:
- Load properties file in servlet?
- Load properties file in Servlet/JSP
и некоторые другие решения ...

Спасибо заранее!

ответ

0

Вот решение, которое я использовал, который успешно работает в контексте сервлета:

  • Перемещена файл свойства projectRoot/WebContent/WEB-INF/classes/resources/dbprops.properties
  • и назвали его с этим:
    InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("resources/dbprop.prope‌​rties");

Примечания где если вы используете это решение, вы можете использовать косые черты. Это был отличный ресурс для моей проблемы: Where to place and how to read configuration resource files in servlet based application?