Метод Dao.class.getResourceAsStream (fileName) возвращает значение null в качестве входного потока, если целевой файл не существует в пути к классам, поэтому NullPointerException.
Вы должны либо перехватить его (теперь вы только ловите IOException), либо протестировать поток ввода перед вызовом props.load (stream) для null;
Теперь, какой корневой каталог вы имеете в виду? Системный корень, исходный корень приложения, рабочий каталог приложения? Системный корень был бы довольно плохим местом для размещения ваших конфигурационных файлов.
Обратитесь к нему с помощью "deploy.properties" (без косой черты в начале) и поместите его в корень вашего пути к классам ("classes", "bin" - или как вы его называете).
Если вы поместите его на уровне пакета по умолчанию вашего исходного каталога - либо в исходном, либо в каталог, который вы добавили в качестве исходного каталога, он будет скопирован в classpath во время компиляции следующим образом:
/app
/src
/config
deploy.properties
и теперь добавьте каталог конфигурации в проект в качестве исходного каталога.