首页 > 解决方案 > java.io.FileNotFoundException: src\main\resources\Report\testQuery.xlsx (系统找不到指定的路径) 在tomcat中部署文件后

问题描述

我正在运行一个 cron 调度程序,它将运行查询并导出到资源文件夹中的 excel 文件中。当我在 IDE 中运行程序时,它工作正常并且文件正在资源下创建,但是当我在 Tomcat 中部署代码时出现此错误“java.io.FileNotFoundException: src\main\resources\Report\testQuery.xlsx (该系统找不到指定的路径)”

IDE 的输出:启动已连接执行导出成功关闭

来自 Tomcat 的输出:

启动 Connected Executing java.io.FileNotFoundException: src\main\resources\Report\testQuery.xlsx(系统找不到指定的路径)

标签: javaspringspring-boot

解决方案


将应用程序部署到 Tomcat 时,文件夹src\main\resources\Report不存在。构建项目时,已编译的类和资源被打包到 WAR 档案中。在运行时,您可以从 /resources 文件夹访问资源,但不能在那里写入。

您需要为生成的文件找到其他位置,以确保在部署到应用程序服务器时它可用于您的应用程序。

  • 如果文件是临时文件,您可以使用File.createTempFile,在任何环境中使用都非常安全。
  • 您可以使用应用程序的工作目录,无论它是什么。在您的 IDE 中,它将是您项目的根文件夹(这就是src\main\resources\Report\testQuery.xlsx起作用的原因),在 Tomcat 上它取决于服务器配置(CATALINA_BASE 环境变量)。您可以在应用程序启动时在那里创建一个/Report子目录。

推荐阅读