【发布时间】:2020-01-06 19:38:11
【问题描述】:
我的 Spring Boot 项目在 src/main/resources 文件夹中包含一个 XML 文件,这是此类文件的常用位置。
在本地和 Pivotal CloudFoundary 上运行,我能够找到文件并将其读入,但在 Beanstalk 上,该过程会导致一个空文件。
定位和读取文件的代码:
URL url = getClass().getResource("/myFile.xml");
LOG.info("File location: " + url.toString());
生成的日志条目:
File location: jar:file:/var/app/current/application.jar!/WEB-INF/classes!/myFile.xml
当我通过 SSH 连接到 EC2 实例时,我可以在指定目录中找到该 jar。
我是否需要配置 Maven 才能将此文件移动到某处?
更新
我已经意识到我需要像在 InputStream 中一样对待这个文件,因为它被打包在 jar 中。
我现在使用以下代码,导致以下错误:
FileUtils.copyInputStreamToFile(new ClassPathResource("myFile.xml").getInputStream(), myFile);
java.lang.NullPointerException: null
at org.apache.commons.io.FileUtils.openOutputStream(FileUtils.java:345) ~[commons-io-2.5.jar:2.5]
和
FileUtils.copyInputStreamToFile(new ClassPathResource("classpath:myFile.xml").getInputStream(), myFile);
java.io.FileNotFoundException: class path resource [classpath:myFile.xml] cannot be opened because it does not exist
谢谢!
【问题讨论】:
标签: spring amazon-web-services spring-boot amazon-ec2 amazon-elastic-beanstalk