【问题标题】:String Boot getting a resource file字符串启动获取资源文件
【发布时间】:2017-10-30 15:33:56
【问题描述】:

我有一个 Spring Boot 应用程序。包含此文件:

resources/metrics/telefonica/Metrics.xlsx

在代码中:

@Value(value = "classpath:/metrics/telefonica/Metrics.xlsx")
private Resource telefonicaMetricsTemplate;

..

Workbook wb = 
            WorkbookFactory.create
            (telefonicaMetricsTemplate.getInputStream());

但是我收到了这个错误:

Caused by: java.io.FileNotFoundException: class path resource [metrics/telefonica/Metrics.xlsx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/Users/lopes/Documents/workspace-sts-3.9.0.RELEASE/telefonicaUtils/target/telefonicaUtils-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/metrics/telefonica/Metrics.xlsx
    at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:217)

我也试过Resource telefonicaMetricsTemplate = new ClassPathResource("/metrics/telefonica/Metrics.xlsx");,结果相同

我正在运行该应用程序。从命令行如下:

java -jar target/telefonicaUtils-0.0.1-SNAPSHOT.jar

我正在运行应用程序。来自 Eclipse,它工作正常

【问题讨论】:

  • 您是否尝试过使用 classpath*:/metrics/telefonica/Metrics.xlsx 来搜索类路径中的每个指标目录?
  • 如果您指定"classpath:/metrics/telefonica/Metrics.xlsx",我认为这会在您的文件系统上签入根目录。也许尝试删除第一个斜杠,因为通常您的 IDE 将资源文件夹视为 .(至少 IntelliJ 是这样做的。)所以您可以尝试 "classpath:metrics/telefonica/Metrics.xlsx""classpath:./metrics/telefonica/Metrics.xlsx""file:metrics/telefonica/Metrics.xlsx" 或 @987654331 @

标签: java spring spring-mvc spring-boot file-io


【解决方案1】:

由于您对资源路径进行了硬编码,因此您不需要任何依赖注入。只需将您的资源初始化为ClassPathResource

private Resource telefonicaMetricsTemplate = new ClassPathResource("/metrics/telefonica/Metrics.xlsx");

【讨论】:

    【解决方案2】:

    您是否尝试将classpath:... 替换为file:... 并指定绝对路径?

    另外,我知道有一个用于处理 Microsoft 文档的 Apache API。您可以将它与您的 Spring Boot 应用程序一起使用并制作您自己的 Resource bean:https://poi.apache.org/

    使用示例:https://www.concretepage.com/apache-api/read-write-and-update-xlsx-using-poi-in-java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      相关资源
      最近更新 更多