访问“我的资源”文件夹中的文件Elastic Beanstalk / Spring Boot

时间:2019-09-13 20:03:04

标签: java amazon-web-services spring-boot filesystems amazon-elastic-beanstalk

我已经部署了一个Spring Boot应用程序,该应用程序需要读取jar中resources文件夹中存储的文件,并在进行一些处理时还保存文件。尝试访问我的Elastic beantalk(t2.small)上的resources文件夹会给出:

输入路径不存在:file:/var/app/current/resources/data/url_list1.csv

我尝试使用“ System.getProperty(“ user.dir”)+“ /resources/data/url_list1.csv”

访问文件

我已经尝试在系统上的localhost上完成此操作:

System.getProperty(“ user.dir”)+“ /src/main/resources/data/url_list1.csv”

它不起作用。我知道很多人都有这方面的经验。

我找到了解决方法:

我看到了这个答案,关于jar文件在aws弹性beantalk上的解压缩位置,我不得不寻找该文件。

AWS Elastic Beanstalk application folder on EC2 instance after deployed?

查找/-名称YOUR_FILE.py -print
在/ tmp文件夹中找到文件

/tmp/eb_extracted_jar/BOOT-INF/classes/data/url_list1.csv

这就是弹性beantalk阻止文件从jar解压缩的地方,我不是Linux专家。因此,我不得不将其硬编码到应用程序中。我不知道是否有其他方法可以相对于类路径从Spring Boot应用程序动态访问它。我正在将文件路径提供给JavaSparkContext.textFile,该文件路径需要一个字符串。同时,在应用程序运行时,该应用程序的类路径默认为/ var / app / current/。

2 个答案:

答案 0 :(得分:0)

所有资源均移至目标文件夹。您可以通过调用getClass().getResourceAsStream("/data/url_list1.csv");

来获取路径

答案 1 :(得分:0)

使用 Spring Boot Elastic Beanstalk 和 OpenPDF(itext 开源版本),这是我如何让它工作

Resource input = new ClassPathResource("assets/Logo.png");
Image freightOneLogo=Image.getInstance(input.getURI().toString());

我尝试了其他几种方法,但无法使其正常工作。
该文件位于“resources/assets/Logo.png”