2016-02-12 93 views
3

我已經寫了AWS lambda函數,我想從屬性文件中讀取數據庫連接的詳細信息,以及哪些是在我的類路徑中,但我無法加載該文件。這裏是我的代碼:如何從AWS lambda中的類路徑加載屬性文件java

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

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

如果我運行通過正常的Java應用程序,它的時間,它正在這個代碼,但每當我運行它作爲AWS lambda函數然後 的InputStream來了空。

回答

4

你只是一個字符。這裏有一個工作的例子,我必須做同樣的事情:

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

建設部署罐子時,這可與以下Maven文件結構:

  • 項目
  • 項目/ src目錄/主/ java的
  • 項目/ src目錄/主/ JAVA/COM /某事/ DBConfiguartion.java -
  • 項目/ src目錄/主/資源
  • 幻燈ct/src/main/resources/lambda.properties
+0

謝謝bclemenzi ..我會試試這個 – Mahesh

+0

我遇到問題描述中指定的問題。現在,當我更改屬性文件名以斜槓(/)開頭時,那麼我的本地JUnit測試失敗。 –

+0

它是如何爲你們工作的? – greg

2

當您想加載屬性文件時,您可以使用ResourceBundle加載屬性。

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

這不同於加載文件作爲InputStream,但這對我有效。在Maven項目文件將需要位於:

  • 項目/ src目錄/主/資源/ lambda.properties

我有一個簡單的Hello-LAMBDA世界從讀取當前版本屬性文件github

+0

嗨,Udo ..謝謝你的建議。我之前並不知道** ResourceBundle **。 – Mahesh

相關問題