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