關於項目打包後路徑下資源獲取不到空指針問題
- 2020 年 6 月 28 日
- 筆記
- java-通用知識說明
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包獲取內部流 外部資源可直接根據路徑獲取流