关于项目打包后路径下资源获取不到空指针问题

1.首先明确打包形式:

如果是jar包的形式,资源是包含在jar包内的,程序运行无法通过路径获取jar包内的资源,只能通过程序内部去获取文件流

通常我们在IDEA测试时容易直接去根据路径来获取流,这样对于打包jar项目来说,打包后的流是获取不到的

    String path = this.class.getResource("/config/xxx.properties").getPath();
    FileInputStream fis = new FileInputStream(new File(path)); 

  这里我们用的解决方案一般是在程序内部获取流来进行处理

InputStream is =this.getClass().getResourceAsStream("/config/xxx.properties");

  

如果打包的tar包,对于resources下目录将会解压出来的项目,我们可以直接通过第一种方式来获取对应的流,因为文件是在jar包外的,可以直接封装成流。

 

注意点:

1.碰到此类问题  首先明确打包后文件资源位置

2.在IDE  Windows cmd下 以及Linux 下依次测试  有时可能是盘符问题  一般路径中的分割斜杆可已用jdk的 File.separator 来进行分割,防止不同环境下的路径问题

3.根据实际情况修改文件获取方式  jar包获取内部流  外部资源可直接根据路径获取流

 
posted @ 2020-06-28 18:21  胡小华  阅读(511)  评论(0编辑  收藏  举报