問題描述
最近遇見一個問題,在開發環境下正常運行的代碼,打包後不能正常運行,由於日誌被定製化了,問題很難定位,經過細(坑)心(爹)的排查,終於找到問題——配置文件沒有讀取。納尼!!
原因
這主要是因爲jar包是一個單獨的文件而不是文件夾,不能通過“file:***.jar!\BOOT-INF\classes!\jdbcType.xml”定位jar包內的資源。
解決
讀取本地文件如下所示:
SAXReader xmlReader = new SAXReader();
String path = URLDecoder.decode(this.getClass().getResource("/").getPath(), "UTF-8");
File xmlFile = new File(path + "/jdbcType.xml");
Document document = xmlReader.read(xmlFile);
改爲
SAXReader xmlReader = new SAXReader();
InputStream xmlFile = this.getClass().getResourceAsStream("/jdbcType.xml");
Document document = xmlReader.read(xmlFile);