我已经部署了一个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/。
答案 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”