欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項目中jar發(fā)布獲取jar包所在目錄路徑的最佳方法

 更新時間:2022年07月24日 09:57:02   作者:m0_66557301  
在開發(fā)過程中,我們經(jīng)常要遇到上傳圖片、word、pdf等功能,但是當我們把項目打包發(fā)布到服務器上時,對應的很多存儲路徑的方法就會失效,下面這篇文章主要給大家介紹了關于SpringBoot項目中jar發(fā)布獲取jar包所在目錄路徑的相關資料

 示例代碼:

        //第一種
        File path = new File(ResourceUtils.getURL("classpath:").getPath());
        if(!path.exists()) path = new File("");
        System.out.println(path.getAbsolutePath());
        //第二種
        System.out.println(System.getProperty("user.dir"));
        //第三種
        String path1 = ClassUtils.getDefaultClassLoader().getResource("").getPath();
        System.out.println(URLDecoder.decode(path1, "utf-8"));
        //第四種
        String path2 = ResourceUtils.getURL("classpath:").getPath();
        System.out.println(path2);
        //第五種
        ApplicationHome h = new ApplicationHome(getClass());
        File jarF = h.getSource();
        System.out.println(jarF.getParentFile().toString());

這幾種獲取項目目錄的方式中,其中:

第一種、第二種得到的結果一致

第三種、第四種得到的結果一致

但是,不同的運行方式,他們的結果是有偏差的。下面我們來看下不同情況下依次打印的路徑是什么。

先看下直接在idea中運行main方法啟動項目時候,打印的路徑,顯示如下:

再看下打包成jar包中,打印的路徑

第一種執(zhí)行方式

操作方式:打開命令行,目錄切換到jar包所在目錄,然后執(zhí)行 jar -jar 啟動命令,打印的路徑如下:

第二種執(zhí)行方式

操作方式:打開命令行,直接java -jar E:/web_pack/bis_exporter-1.0-SANPSHOT.jar,即不切換到jar所在目錄,而是直接執(zhí)行,打印的路徑如下:

是不是發(fā)現(xiàn)問題了!在這種情況下,第一種和第二種方式打印的路徑是不對的,他打印的路徑就是當前執(zhí)行命令時所在的目錄。這就很容易造成不必要的bug

例如:我們在jar的根目錄寫一個自定義數(shù)據(jù)配置文件,通過第一種或者第二種方式讀取數(shù)據(jù),那么使用遠程執(zhí)行jar的方式,就一定會報找不到配置文件的錯誤。

補充:springboot獲取運行Jar包的目錄

//linux和windows下通用
private String getJarFilePath() {
    ApplicationHome home = new ApplicationHome(getClass());
    File jarFile = home.getSource();
    return jarFile.getParentFile().toString();
}

總結

綜上所述,最好使用第五種方案,獲取運行jar所在的目錄。

到此這篇關于SpringBoot項目中jar發(fā)布獲取jar包所在目錄路徑的文章就介紹到這了,更多相關SpringBoot獲取jar包所在目錄路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring中常見的7種BeanDefinition詳解

    Spring中常見的7種BeanDefinition詳解

    在?Spring?容器中,我們廣泛使用的是一個一個的?Bean,BeanDefinition?從名字上就可以看出是關于?Bean?的定義,下面就跟隨小編一起深入了解一下常見的7中BeanDefinition吧
    2023-09-09
  • MyBatis-Plus枚舉和自定義主鍵ID的實現(xiàn)步驟

    MyBatis-Plus枚舉和自定義主鍵ID的實現(xiàn)步驟

    這篇文章主要給大家介紹了關于MyBatis-Plus枚舉和自定義主鍵ID的相關資料,文中通過實例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • 詳解Nacos中注冊中心和配置中心的實現(xiàn)

    詳解Nacos中注冊中心和配置中心的實現(xiàn)

    Spring?Cloud?Alibaba?是阿里巴巴提供的一站式微服務開發(fā)解決方案。而?Nacos?作為?Spring?Cloud?Alibaba?的核心組件之一,提供了兩個非常重要的功能:注冊中心和配置中心,我們今天來了解和實現(xiàn)一下二者
    2022-08-08
  • java通過DelayQueue實現(xiàn)延時任務

    java通過DelayQueue實現(xiàn)延時任務

    本文主要介紹了java通過DelayQueue實現(xiàn)延時任務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Mybatis-Plus中update()和updateById()將字段更新為null

    Mybatis-Plus中update()和updateById()將字段更新為null

    本文主要介紹了Mybatis-Plus中update()和updateById()將字段更新為null,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • java跳出for循環(huán)的三種常見方法

    java跳出for循環(huán)的三種常見方法

    這篇文章主要給大家介紹了關于java跳出for循環(huán)的三種常見方法,需要的朋友可以參考下
    2023-07-07
  • Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

    Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

    這篇文章主要介紹了Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 一文帶你深入理解Java?AbstractQueuedSynchronizer

    一文帶你深入理解Java?AbstractQueuedSynchronizer

    在并發(fā)編程中,鎖是一種保證線程安全的方式,這篇文章主要為大家介紹了AbstractQueuedSynchronizer(AQS)的數(shù)據(jù)結構及實現(xiàn)原理,感興趣的小伙伴可以了解一下
    2023-07-07
  • Java設計模式之命令模式

    Java設計模式之命令模式

    這篇文章介紹了Java設計模式之命令模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • java selenium元素定位大全

    java selenium元素定位大全

    本文主要介紹java selenium元素定位,這里整理了selenium元素定位的相關資料,有興趣的小伙伴可以參考下
    2016-08-08

最新評論