zoukankan      html  css  js  c++  java
  • SpringBoot打成jar包后,获取不到读取resources目录下文件路径的问题

    问题描述:

    Springboot没有打成jar之前,可以成功获取读取resources目录下xxx.json文件的 路径。但是打成jar包后,接口调不通,原因是获取不到文件的路径。

    原因:

    在本地进行调试时,文件是真实存在于磁盘的某个目录。此时通过获取文件路径,是可以正常读取的,因为文件确实存在。

    而打包成jar以后,实际上文件是存在于jar这个文件里面的资源文件,在磁盘是没有真实路径的。

    所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法无法正确获取文件。

    解决办法:

    1.在网上查了相关资料说通过流的方式获取,但是测试后还是没有获取到。

    2.最终采用的是绝对路径的方式,获取linux环境下的存放文件的具体路径。如:(/usr/local/

    具体代码:

    application.yml设置:

     path:
        resourcePath: /usr/local/data

    代码:

    说明:我使用的是自定义工具类,里面的方法是静态的,所以不能直接通过一下这种方式。

    原因:spring不允许/不支持把值注入到静态变量中。Spring的@Value依赖注入是依赖set方法,set方法是普通的对象方法,static变量是类的属性,static没有set方法。

    @Value("${path.resourcePath}")
    private static String resourcePath;

    做法:

    说明:Spring支持set方法注入,可以利用非静态的setter方法注入静态常量。注意set方法不能有static

        private static String  resourcePath;
        @Value(value = "${URI.resourcePath}")
        private void setResourcePath(String  resourcePath){
            this.resourcePath = resourcePath ;
        }

    注意:class需要加 @Component等注解,这样spring才能扫描到

    这是这几天做项目时,遇到的问题,特此记录。

     
  • 相关阅读:
    Matlab将字符串改成变量名-eval
    Workbench-材料库
    UG-装配
    FreeCAD将Macro自定义到工具栏
    FreeCAD加载ui文件显示于组合浏览器
    字符生成线条字-xdd1997
    ANSYS求解器
    常用物理量及其单位以及材料信息
    Appium | UiAutomator exited unexpectedly with code 0, signal null
    【转】windows改变Sublime选中背景颜色
  • 原文地址:https://www.cnblogs.com/kaile/p/10193979.html
Copyright © 2011-2022 走看看