Почему у меня возникают проблемы с доступом к файлу .properties в отдельном экземпляре tomcat, но не в экземпляре, внедренном в eclipse? - PullRequest
0 голосов
/ 07 августа 2010

Я написал простой сервлет Hello World в Eclipse, содержащий следующее в методе doGet моего HelloWorldServlet.java


PrintWriter writer = response.getWriter();
String hello = PropertyLoader.bundle.getProperty("hello");
writer.append(hello);
writer.flush();

PropertyLoader - это простой класс в том же пакете, что и сервлет, который выполняет следующие действия:


public class PropertyLoader {
    public static final Properties bundle = new Properties();

    static {
        InputStream stream = null;
        URL url = PropertyLoader.class.getResource("/helloSettings.properties");
        stream = new FileInputStream(url.getFile());
        bundle.load(stream);         
    }
}//End of class

Я поместил файл с именем helloSettings.properties в / WebContent / WEB-IND / classes, который содержит следующую единственную строку содержимого:

hello=Hello Settings World

Когда я добавляю Tomcat 6.0 в свой проект и запускаю его в Eclipse, он успешно печатает

«Hello Settings World» для веб-браузера.

Однако, когда я экспортирую проект как файл войны и вручную помещаю его в ... / Tomcat 6.0 / webapps После этого я получаю "null" в качестве результата.

Это проблема с настройкой classpath / classloader? разрешения? любой из других файлов конфигурации? Я точно знаю, что файл helloSettings.properties находится в папке WEB-INF / classes.

Любая помощь?

1 Ответ

0 голосов
/ 09 августа 2010

Ну, после долгого просмотра я нашел то, что кажется "нормальным", почему делать то, что я пытаюсь сделать:

Вместо ... (как я это делал)

public class PropertyLoader { 

    public static final Properties bundle = new Properties();

    static { 

        InputStream stream = null; 
        URL url = PropertyLoader.class.getResource("/helloSettings.properties"); 
        stream = new FileInputStream(url.getFile()); 
        bundle.load(stream);

    } 

}//End of class

ИСПРАВЛЕНИЕ

public class PropertyLoader { 

    public static final Properties bundle = new Properties();

    static { 

        InputStream stream = null;
        stream = SBOConstants.class.getResourceAsStream("/sbonline.properties");
        bundle.load(stream);

    } 

}//End of class

Я модифицирую чужой код, так что я не уверен, почему они сделали это по-другому ... но я думаю, что url.getFile() было моимпроблема, и я не знаю почему.

...