鍍金池/ 問答/Java/ springboot項(xiàng)目jar包運(yùn)行獲取不到項(xiàng)目?jī)?nèi)的文件

springboot項(xiàng)目jar包運(yùn)行獲取不到項(xiàng)目?jī)?nèi)的文件

springboot項(xiàng)目運(yùn)行jar包運(yùn)行后用ClassPathResource讀取項(xiàng)目下的xx.cer,xx.pem等文件沒問題,但由于引入第三方的jar包通用方法傳參是文件路徑,但是通過resource獲取的路徑是這樣的”jar:file:/aa/bb/classes!/xx/xx.xxx,有什么方法可以不修改第三方的源碼直接讀取到j(luò)ar包的路徑?

回答
編輯回答
青檸

因?yàn)橥ㄟ^getResource方法獲取的路徑是不透明的(isOpaque),這種路徑是防止你對(duì)這個(gè)資源進(jìn)行操作,可以通過XXX.class.getProtectionDomain().getCodeSource().getLocation().getFile();的方法獲取classes的路徑,然后再加上你jar包的相對(duì)路徑就是jar包的路徑了。
你可以參考jarUtil這個(gè)工具類

參考文章:URI is not hierarchical

2017年12月8日 16:41