關於項目打包後路徑下資源獲取不到空指針問題

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包獲取內部流  外部資源可直接根據路徑獲取流