springboot 打成的jar包在ClassLoader().getResource方法讀取文件爲null

一、屬性文件以下:java

10001=錯誤

二、文件讀取主要代碼spring

// 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啓動讀取測試maven

2.2 使用java -jar xxx.jar啓動測試ide

從運行結果來看,使用getResourceAsStream方式能夠讀到jar中的文件,而使用getResource讀取爲空,在jar文件中查找資源和在文件系統中查找資源的方式是不同的,儘可能使用Stream流的方式操做資源文件。spring-boot

使用spring-boot-maven-plugin插件打出的fat-jar是不能夠做爲其餘應用的jar依賴的,由於沒法向普通的依賴jar那樣去讀取jar中的一些文件,這個和spring-boot-maven-plugin打包機制有關,能夠換成使用maven-jar-plugin插件替換進行成可運行的的jar測試

相關文章
相關標籤/搜索