簡體   English   中英

WAR中的打包JSON文件未在AWS上接收

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM