zoukankan      html  css  js  c++  java
  • springboot打成jar后获取classpath下文件失败

    原文链接:https://blog.csdn.net/qq_18748427/article/details/78606432

    springboot打成jar后获取classpath下文件失败

    使用如下代码:

    ClassPathResource resource = new ClassPathResource("application.yml");
    File file = resource.getFile();
    FileUtils.readLines(file).forEach(System.out::println);

    未打包时可以获取到文件,打包后报错

    Caused by: java.io.FileNotFoundException: class path resource [application.yml] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/sunmnet/JetBrains/workspace/bigdata-parse-table/target/bigdata-parse-table-1.0-SNAPSHOT.jar!/BOOT-INF/classes!/application.yml
    at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:215) ~[spring-core-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
    at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:53) ~[spring-core-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
    at hello.whz.Application.lambda$lookup$0(Application.java:30) [classes!/:1.0-SNAPSHOT]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:732) [spring-boot-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
    ... 14 common frames omitted

    这是因为打包后Spring试图访问文件系统路径,但无法访问JAR中的路径。
    因此必须使用resource.getInputStream()

    ClassPathResource resource = new ClassPathResource("application.yml");
    InputStream inputStream = resource.getInputStream();
    IOUtils.readLines(inputStream).forEach(System.out::println);
  • 相关阅读:
    续上-选课系统
    第一个java web的课堂练习-开始
    子类与父类方法间的关系
    课后作业-3
    小结
    Java中子类与基类变量间的赋值
    今日总结
    今日总结
    今日总结
    今日总结
  • 原文地址:https://www.cnblogs.com/fswhq/p/10993583.html
Copyright © 2011-2022 走看看