java打成jar后,獲取resources下的文件資源問題及解決
更新時間:2026年05月11日 10:03:35 作者:錦鯉飛上天
作者在寫代碼時遇到一個問題:在將項目打包成jar包后,無法通過常規(guī)方式獲取resources文件夾下的資源,通過分析原因,作者找到了一種新的解決方案,即通過類加載器獲取jar包內的資源,此方式返回后的資源以文件流的形式返回,作者將其轉換為了byte[]的形式使用
最近在寫代碼的時候發(fā)現
通過以下兩種方式獲取resources文件下的資源時,在編輯器里運行是能獲取到的,打成jar包以后就獲取不到了,后來發(fā)現原來項目打成jar包以后是一個文件,而不是一個文件夾,所以通過這種方式是獲取不到resources文件下的資源的。
//1.通過ClassPathResource 類獲取
ClassPathResource resource = new ClassPathResource("pdfTemplates/logo.jpg");
//2.通過ResourceUtils獲取
ResourceUtils.getFile("classpath:").getPath();
怎么辦呢?
我們可以通過下面的這種方式來獲取打包后的resources下的資源。
//讀取resources的文件,打成jar包后不能直接讀取,需要通過這種方式讀取
//這個是直接取的resources下的文件,所以直接寫resources下的相對路徑就行,不用加classpath:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("pdfTemplates/logo.jpg");
我這是獲取了一個圖片資源,這種獲取方式獲取出來的是文件流,可以轉成你們想要的方式去直接使用,我是轉成了byte[]。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java常用工具類 Reflect反射工具類、String字符串工具類
這篇文章主要為大家詳細介紹了java常用工具類,包括Reflect反射工具類、String字符串工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05
使用redis的increment()方法實現計數器功能案例
這篇文章主要介紹了使用redis的increment()方法實現計數器功能案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

