[英]Packaged JSON file in WAR not picked up on AWS
我有一個springboot應用程序,可以在其中讀取一堆JSON文件。
SRC /主/資源/商店
使用此代碼:
File(javaClass.getResource("/shops/").path).walkTopDown().forEach {
當我在本地運行時
干凈的bootRun
代碼運行良好,我從解析這些文件的查詢中獲得結果。
但是,使用
清潔戰爭
並將其部署到AWS的EC2實例中,我沒有得到任何我認為是因為未拾取文件的結果。
我將.war重命名為.zip進行檢查,但找不到json文件(除非已將其重命名和移動)。 如何確保文件在WAR中正確打包?
編輯:現在已確認問題是服務器部署的WAR不會讀取任何文件,而本地運行實例正在讀取。
當您運行bootRun
,它將在build/classes
下找到/shop
,因此path
將為您提供本地文件系統路徑,該路徑可與File
自然使用。 但是,當打包在WAR文件中時,在WAR內部找到的資源的path
不再是有效的文件系統路徑。 它將使用WAR文件的路徑以及WAR內部資源的路徑進行編碼。
要使其工作,請使用javaClass.getResourceAsStream("/shop/somefile.json")
代替File
並從返回的InputStream
讀取。
下一個問題是,使用File
可以遍歷目錄樹並自動獲取/shop/
下的所有json文件。 現在您不能,因為沒有文件系統目錄可瀏覽。 您需要使用這些庫之一在類路徑上查找通配符資源。 例如,Spring使您可以加載與/shop/**/*.json
匹配的所有資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.