Как получить контекстный путь файла свойств из веб-службы в Java? - PullRequest
3 голосов
/ 12 марта 2011

Я пытаюсь прочитать контекстный путь файла свойств из моего приложения,

properties.load(this.getClass().getResourceAsStream(path));



import java.util.Properties;

public class test1 {

    public String getValues()
    {
        PropertiesFileReader fileReader = new PropertiesFileReader();

        Properties prop = fileReader.getProp("/messages/AttachFile.properties");

        String out = prop.getProperty("FILE_NAME");

        return out;
    }
}

Это работает, когда файл свойств находится под WEB-INF -> classes -> messages -> myfile, но когда я перемещаю этот файл в другую папку, например WEB-INF -> messages -> myfile кажется, что путь не получается ...

РЕДАКТИРОВАТЬ: я не использую сервлетов ...

Ответы [ 3 ]

2 голосов
/ 12 марта 2011

Если происходит сбой, поскольку новый путь не является частью пути к классам, а Class#getResourceAsStream() загружает ресурсы из пути к классам. /WEB-INF/classes по умолчанию является частью пути к классу, как указано в спецификации Servlet API, поэтому он работает. Я рекомендую оставить его в пути к классам или добавить новый путь /WEB-INF/resources в путь к классам.

Если вы используете IDE, такую ​​как Eclipse, то вы можете сделать это, добавив ее как Исходная папка в путь сборки проекта (который во время сборки переместит ее обратно в /WEB-INF/classes в любом случае). Кроме того, вы также можете просто создать пакет resources в корне исходного кода Java и затем поместить файл туда. Он также станет частью пути к классам.

0 голосов
/ 12 марта 2011

Когда вы говорите, что не используете сервлеты, что вы имеете в виду?Как работает этот код?
В основном, когда вы используете сервлеты, только путь WEB-INF / classes и WEB-INF / lib находятся на пути к классам.Таким образом, вы не можете получить доступ к ресурсам с помощью загрузчиков классов.НО вы можете получить к ним доступ, используя ServletContext.Итак, если ваш код работает в Servlet / JSP, вы можете сделать следующее:

getServletContext().getResourceAsStream("your resource starting from web-application root");
0 голосов
/ 12 марта 2011

вам просто нужно добавить /WEB-INF/:

"/WEB-INF/messages/myfile";
...