1、屬性文件如下:
10001=錯誤
2、文件讀取主要代碼
// getResource方式 URL resourceURI = getClass().getClassLoader().getResource(""); // getResourceAsStream方式 InputStream stream = getClass().getClassLoader().getResourceAsStream("errorCode.properties"); logger.info(">>>>>>>>>>>>>>>>>>>>>> errorCode stream " + stream); logger.info(">>>>>>>>>>>>>>>>>>>>>> resourceURI " + resourceURI); if (null == stream) { logger.warn("errorCode.properties file not find"); return; } InputStreamReader reader = new InputStreamReader(stream,"UTF-8"); properties.load(reader); Enumeration<?> keys = properties.propertyNames(); while(keys.hasMoreElements()) { String key = (String) keys.nextElement(); String value = properties.getProperty(key); logger.info("key :" + key + "- value:" + value); }
2.1 使用idea啟動讀取測試
2.2 使用java -jar xxx.jar啟動測試
從運行結果來看,使用getResourceAsStream方式可以讀到jar中的文件,而使用getResource讀取為空,在jar文件中查找資源和在文件系統中查找資源的方式是不一樣的,盡量使用Stream流的方式操作資源文件。
使用spring-boot-maven-plugin插件打出的fat-jar是不可以作為其他應用的jar依賴的,因為無法向普通的依賴jar那樣去讀取jar中的一些文件,這個和spring-boot-maven-plugin打包機制有關,可以換成使用maven-jar-plugin插件替換進行成可運行的的jar