最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何獲取jar包resources文件路徑

 更新時間:2023年12月26日 15:12:09   作者:GJQ-JAVA  
java項目發(fā)布到jar之后找不到文件路徑,遇到這樣問題如何處理呢,下面小編給大家分享獲取jar包resources文件路徑的解決方法,感興趣的朋友一起看看吧

獲取jar包resources文件路徑

java項目發(fā)布到jar之后找不到文件路徑
本地: String path = this.getClass().getClassLoader().getResource(xmlPath).getPath();
打成jar發(fā)布服務器不管用了

解決辦法:

//相對路徑
 private final String xmlPath= "/jenkinspipeline/PipelineConfig.xml";
    public StringBuilder propertyResolverXml(String xmlPath) {
        InputStream resourceAsStream = XmlLocalUtils.class.getResourceAsStream(xmlPath);//讀取內容
        StringBuilder xmlStr = new StringBuilder();
        BufferedReader read = null;
        try {
            read = new BufferedReader(new InputStreamReader(resourceAsStream));//轉成bufferreader按行讀取
            String tempStr;
            while ((tempStr = read.readLine()) != null) {
                xmlStr.append(tempStr);
            }
            read.close();
        } catch (Exception ex) {
            log.error("解析文件異常:", ex);
            throw new NativeSphereCicdException(NativeSphereCicdEnum.PROPERTYRESOLVERXML_EXCEPTION);
        }
        return xmlStr;
    }

補充:

Springboot獲取jar包中resources資源目錄下的文件

阿薩斯多問題現(xiàn)象:

        今天在項目中遇到一個業(yè)務場景,需要用到resources資源目錄下的文件,然后就在思考一個問題:

        當項目打成jar后,Springboot要如何獲取resources資源目錄下的文件呢?

問題分析:

        如題,如何在項目打成jar包之后,在代碼中依然能夠獲取到jar包中resources資源目錄下的文件呢?

        我們都知道其實要獲取resources資源目錄下的文件,有非常多的方法;這些方法雖然能在正常的debug本地運行項目時有效,但在項目打成jar包運行時,卻并非都是有效的了!?。?/p>

        因此,在這里我打算記錄一個親測可行的方法。

        首先,展示一下我的項目結構,如圖我在resources資源目錄下創(chuàng)建了一個文件夾rules,然后在其中創(chuàng)建了3個drl文件:

        由于代碼邏輯非常簡單,所以這里直接通過啟動類來測試了。

        ResourceDemoApplication:

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.File;
import java.io.IOException;
/**
 * resource資源目錄專題
 * @author Stephen
 */
@SpringBootApplication
public class ResourceDemoApplication {
	public static void main(String[] args) {
//		SpringApplication.run(ResourceDemoApplication.class, args);
		try {
			//如何獲取resource下的文件?【注意:即使打成jar包也得有效】
			ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
			Resource[] resources = resourcePatternResolver.getResources("classpath*:rules/**/*.*");
			for ( Resource resource : resources ) {
				//獲取文件名
				System.out.println(resource.getFilename());
				//獲取文件,該方式在打成jar包后會報錯,因為resource文件不在系統(tǒng)中,而是在jar包中
				File file1 = resource.getFile();
				//獲取文件,在打成jar包后,通過url來獲取文件,則路徑是正確的
				File file = new File(resource.getURL().getFile());
				//獲取文件絕對路徑,但路徑有問題,因為resource文件不在系統(tǒng)中,而是在jar包中
//				System.out.println(file.getAbsolutePath());
				//獲取文件名
				System.out.println(file.getName());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

        接下來展示的是運行結果。

        首先是本地項目:        

        可以看到,非常順利的打印出了文件名。

        然后是jar包運行:

        同樣沒問題。

注意:

        需要注意的是:在 ResourceDemoApplication 啟動類中,有兩行被注釋掉的代碼:

        上面這行代碼在本地運行是沒問題的,但打成jar包運行時會出現(xiàn)如下報錯,所以不建議使用:

        顯示的文件路徑是:

jar:file:/C:/Users/Administrator/Desktop/resource_demo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/rules/comparison-rules.drl

        可以看到 resource_demo-0.0.1-SNAPSHOT.jar 后面跟了一個 ! 然后才是對應drl文件target包中的路徑,這個細節(jié)我沒有深究,但單從這個暴多的文件路徑來分析的話,我的理解就是,這個文件路徑其實是個偽路徑,它不是文件真實的url地址,所以通過resource對象無法獲取到文件。       

        另一行注釋的代碼是:

         執(zhí)行這行代碼,即使在jar包運行時,也不會報錯,只是在jar包運行時,打印的文件絕對路徑并不是真實的路徑,也就是系統(tǒng)無法識別,因為這個文件在jar包內部,路徑如下:

         如有擴展,后續(xù)將會補充。

解決方法:

try {
			ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
			Resource[] resources = resourcePatternResolver.getResources("classpath*:rules/**/*.*");
			for ( Resource resource : resources ) {
				//獲取文件,在打成jar包后,通過url來獲取文件,則路徑是正確的
				File file = new File(resource.getURL().getFile());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

到此這篇關于Springboot獲取jar包中resources資源目錄下的文件的文章就介紹到這了,更多相關Springboot獲取resources文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關于ObjectUtils.isEmpty()?和?null?的區(qū)別

    關于ObjectUtils.isEmpty()?和?null?的區(qū)別

    這篇文章主要介紹了關于ObjectUtils.isEmpty()?和?null?的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java的接口調用時的權限驗證功能的實現(xiàn)

    Java的接口調用時的權限驗證功能的實現(xiàn)

    這篇文章主要介紹了Java的接口調用時的權限驗證功能的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Spring?AOP實現(xiàn)聲明式事務機制源碼解析

    Spring?AOP實現(xiàn)聲明式事務機制源碼解析

    這篇文章主要為大家介紹了Spring?AOP實現(xiàn)聲明式事務機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 在java代碼中獲取JVM參數(shù)的方法

    在java代碼中獲取JVM參數(shù)的方法

    下面小編就為大家?guī)硪黄趈ava代碼中獲取JVM參數(shù)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • IDEA自定義Maven倉庫的實現(xiàn)

    IDEA自定義Maven倉庫的實現(xiàn)

    使用Maven進行Java程序開發(fā)時,開發(fā)者能夠極大地提高開發(fā)效率,本文主要介紹了IDEA自定義Maven倉庫的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Spring?Boot使用線程池處理上萬條數(shù)據(jù)插入功能

    Spring?Boot使用線程池處理上萬條數(shù)據(jù)插入功能

    這篇文章主要介紹了Spring?Boot使用線程池處理上萬條數(shù)據(jù)插入功能,使用步驟是先創(chuàng)建一個線程池的配置,讓Spring Boot加載,用來定義如何創(chuàng)建一個ThreadPoolTaskExecutor,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-08-08
  • JDK動態(tài)代理提高代碼可維護性和復用性利器

    JDK動態(tài)代理提高代碼可維護性和復用性利器

    這篇文章主要為大家介紹了JDK動態(tài)代理提高代碼可維護性和復用性利器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Spring?多數(shù)據(jù)源方法級別注解實現(xiàn)過程

    Spring?多數(shù)據(jù)源方法級別注解實現(xiàn)過程

    多數(shù)據(jù)源管理是Spring框架中非常重要的一部分,它可以提高應用程序的靈活性和可靠性,從而更好地滿足業(yè)務需求,這篇文章主要介紹了Spring?多數(shù)據(jù)源方法級別注解實現(xiàn),需要的朋友可以參考下
    2023-07-07
  • 詳解Elasticsearch如何實現(xiàn)簡單的腳本排序

    詳解Elasticsearch如何實現(xiàn)簡單的腳本排序

    Elasticsearch?是位于?Elastic?Stack?核心的分布式搜索和分析引擎,可以為所有類型的數(shù)據(jù)提供近乎實時的搜索和分析。本文主要介紹了Elasticsearch如何實現(xiàn)簡單的腳本排序,感興趣的可以了解一下
    2023-01-01
  • 詳解使用Maven構建多模塊項目(圖文)

    詳解使用Maven構建多模塊項目(圖文)

    這篇文章主要介紹了詳解使用Maven構建多模塊項目(圖文),非常具有實用價值,需要的朋友可以參考下
    2017-09-09

最新評論

拉孜县| 定边县| 内乡县| 松桃| 磴口县| 增城市| 阳泉市| 灵台县| 西宁市| 凤凰县| 苍梧县| 克山县| 永登县| 武平县| 北海市| 桦甸市| 荣昌县| 岳阳市| 托克逊县| 兴义市| 桦甸市| 阳泉市| 成安县| 肇源县| 来宾市| 九龙坡区| 咸宁市| 南漳县| 襄汾县| 巴里| 凯里市| 河津市| 钦州市| 泸水县| 孟村| 湘阴县| 黔江区| 荔浦县| 蓝山县| 闽清县| 济源市|