Проблема в том, что вы используете getSystemResourceAsStream
. Используйте просто getResourceAsStream
. Системные ресурсы загружаются из системного загрузчика классов, который почти наверняка не является загрузчиком классов, в который загружается ваш jar-файл при запуске в качестве веб-приложения.
Это работает в Eclipse, потому что при запуске приложения системный загрузчик классов настраивается с вашим jar как частью его пути к классам. (Например, java -jar my.jar загрузит my.jar в загрузчик классов системы.) Это не относится к веб-приложениям - серверы приложений используют сложную загрузку классов для изоляции веб-приложений друг от друга и от внутренних частей сервера приложений. Например, посмотрите инструкции tomcat classloader и схему используемой иерархии загрузчиков классов.
РЕДАКТИРОВАТЬ: Обычно вы вызываете getClass().getResourceAsStream()
для получения ресурса в пути к классам, но когда вы выбираете ресурс в статическом инициализаторе, вам нужно будет явно указать класс, который находится в загрузчике классов, который вы хотите загрузить от. Самый простой подход - использовать класс, содержащий статический инициализатор,
например,
[public] class MyClass {
static
{
...
props.load(MyClass.class.getResourceAsStream("/someProps.properties"));
}
}