zoukankan      html  css  js  c++  java
  • springboot项目打jar包后,代码访问不到resource目录的文件

    机缘巧合发现,读取resource目录文件的代码,在本地IDE运行时可以正常工作,但是打jar包后就报文件找不到错误。具体情况如下:

    代码是:

        static {
            try {
                File file = ResourceUtils.getFile("classpath:a.txt");
                String str = FileUtils.readFileToString(file, StandardCharsets.UTF_8);
                System.out.println("a.txt content= " + str);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    报错是:

    java.io.FileNotFoundException: class path resource [a.txt] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/Users/shengruikou/IdeaProjects/koushr/eurekaserverdemo/target/eurekaserverdemo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/a.txt

    报错剖析:

    解决方案:

    第1种方法:

    用Class的getResourceAsStream(String name)方法,要求入参以"/"开始,代码如下:

    第2种方法:

    用ClassLoader的getResourceAsStream(String name)方法,入参不能以"/"开始,代码如下:

    第3种方法:

    用ClassPathResource,代码如下:

        static {
            try {
                ClassPathResource classPathResource = new ClassPathResource("a.txt");
                System.out.println(IOUtils.toCharArray(classPathResource.getInputStream(), StandardCharsets.UTF_8));
                System.out.println(new String(IOUtils.toByteArray(classPathResource.getURL())));
    //            System.out.println(FileUtils.readFileToString(classPathResource.getFile(), StandardCharsets.UTF_8));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    ClassPathResource有三个构造方法:

    1、ClassPathResource(String path):只传一个路径

    2、ClassPathResource(String path, @Nullable Class<?> clazz):传一个路径和一个可为null的类实例

    3、ClassPathResource(String path, @Nullable ClassLoader classLoader):传一个路径和一个可为null的类加载器实例

  • 相关阅读:
    C#屏幕截图
    WPF转换器用法示例
    WPF自定义数字输入框控件
    LINQ 用法,返回结果不是在定义时取值,而是在调用时实时取值,有意思!
    类泛型--必须继承接口
    wpf在异步中给前台赋值
    VS Code中Matlab插件安装设置
    Python 自动给数字前面补0
    Tensorflow (1)
    解决Keras在IDE集成环境中找不到nvcc
  • 原文地址:https://www.cnblogs.com/koushr/p/13795146.html
Copyright © 2011-2022 走看看