我使用IntelliJ和Spring和Java在Mac上本地开发应用程序,然后使用Ubuntu 16.04.3 LTS(GNU / Linux 4.4.0-1048-aws)部署到AWS上的tomcat服务器x86_64的)。 我在指定文件路径时遇到问题,因此无法在两种环境中运行。
我的代码是
InputStream fileStream = new FileInputStream("src/main/resources/static/web/data/ReportDates.json");
JsonReader reader = Json.createReader(fileStream);
JsonObject reportDates = reader.readObject();
reader.close();
当我在本地运行时,会正确读取文件。它位于:
src/main/resources/static/web/data/ReportDates.json
但是当我部署时,该代码会导致错误消息:
java.io.FileNotFoundException:src / main / resources / static / web / data / ReportDates.json(没有这样的文件或目录)
该机器上文件的实际位置为:
/opt/tomcat/webapps/automentor/WEB-INF/classes/static/web/data/ReportDates.json
如何指定文件路径以便它在两种环境中都能正常工作?
答案 0 :(得分:0)
我放弃了使用单一路径。 @Nicholas Pesa让我思考 - 因为我使用IDEA,我没有固定的WEB-INF文件夹,因此我更容易更改应该使用的路径而不是将文件移动到固定位置。 我的代码现在使用:
String filepath = (new File("src/main/resources/static/web/data/ReportDates.json").exists()) ? "src/main/resources/static/web/data/ReportDates.json" : "/opt/tomcat/webapps/automentor/WEB-INF/classes/static/web/data/ReportDates.json";