关于项目打包后路径下资源获取不到空指针问题
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包获取内部流 外部资源可直接根据路径获取流