Как загрузить файл свойств из пути к классам в AWS lambda java

Я написал лямбда-функцию AWS, в которой я хочу прочитать сведения о подключении к базе данных из файла свойств и который находится в моем пути к классам, но я не могу загрузить этот файл. Вот мой код:

InputStream input = DBConfiguartion.class.getResourceAsStream("appsettings");

        Reader r = new InputStreamReader(input, "UTF-8");
        Properties prop = new Properties();
        prop.load(r);

Если я запускаю этот код через обычное консольное приложение Java, когда он работает, но всякий раз, когда я запускаю его как лямбда-функцию AWS, тогда InputStream становится нулевым.


person Mahesh    schedule 12.02.2016    source источник


Ответы (2)


Вам не хватает всего одного персонажа. Вот рабочий пример, что я должен сделать то же самое:

InputStream is = DBConfiguartion.class.getResourceAsStream("/lambda.properties");
Properties properties = new Properties();
properties.load(is);

Это работает со следующей файловой структурой maven при создании jar развертывания:

  • проект
  • проект/SRC/основной/Java
  • проект/src/main/java/com/something/DBConfiguartion.java -
  • проект/источник/основной/ресурсы
  • проект/SRC/основной/ресурсы/лямбда.свойства
person bclemenzi    schedule 01.03.2016
comment
у меня такая же проблема, как указано в описании проблемы. Теперь, когда я меняю имя файла свойств, чтобы оно начиналось с косой черты (/), мой локальный тест JUnit не работает. - person naresh goty; 19.10.2016
comment
@грег. Можете ли вы проверить ниже решение UdoHeld. Он предлагает использовать ResourceBundle - person Mahesh; 17.08.2017

Поскольку вы хотите загрузить файл свойств, вы можете использовать ResourceBundle для загрузки свойств.

String version = ResourceBundle.getBundle("lambda").getString("version");

Это не то же самое, что загружать файл как InputStream, но у меня это сработало. В проекте maven файл должен быть расположен по адресу:

  • проект/SRC/основной/ресурсы/лямбда.свойства

У меня есть простая лямбда Hello-World, которая считывает текущую версию из файла свойств на github.

person Udo Held    schedule 15.08.2017
comment
Привет, Удо.. Спасибо за ваше предложение. Раньше я не знал о ResourceBundle. - person Mahesh; 17.08.2017