繁体   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