国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

classpath對獲取配置文件的影響

xumenger / 567人閱讀

摘要:,到現在為止一切都按部就班,執行上面的命令正常運行,讀取里面的文件,并輸出相應的屬性。那么,如果我們想改變配置文件的內容是否需要修改源文件里的然后重新打包成呢顯然這樣做太麻煩也不太合理,你可以在外面配置一個新的讓里的去讀取。

Java中經常要用到各種配置文件xxx.properties來控制程序的運行或進行國際化等
但是也常常遇到配置文件放置路徑找不到的問題,這里以java.uitl.ResourceBundle為例,
小結一下:
1.Classloader搜索的路徑是classpath指定的
2.搜索文件時走的路徑順序是按照各目錄或jar文件在classpath中的出現位置順序來的
3.配置文件相對路徑的參考root就是classpath中指定的目錄或jar文件包起點

例如:位于package cn.flipme.util中的Resource要讀取cache目錄里的config.properties
我們可以這樣寫:

package cn.flipme.util;

import java.util.ResourceBundle;


public class Resource {
    public static void main( String[] args )
    {
        ResourceBundle rb=ResourceBundle.getBundle("cache.config");
        System.out.println(rb.getString("name"));
    }
}

這時我們把cache目錄放在src目錄下面,或者用Maven的話在src/main/resources目錄下面,
不管怎么樣編譯后都會移到classes目錄下, 執行就能順利獲取到config文件:

classes-|
        -cache-|
            -config.properties
        -cn-|
            -flipme-|
                -util-|
                    -Resource.class
                    

現在我們把這個工程打包成jar,假設叫resource.jar,存放在dist目錄下,
可以通過在cmd里cd到 dist目錄下并輸入以下命令來執行包里的Resource.class

 java -cp resource.jar cn.flipme.util.Resource

注意類Resource前面必須寫上完整的包路徑。
Ok,到現在為止一切都按部就班,執行上面的命令 Resource正常運行,讀取resource.jar里面的cache/config.properties文件,并輸出相應的name屬性。

那么,如果我們想改變配置文件的內容是否需要修改源文件里的config.properties然后重新打包成jar呢?
顯然這樣做太麻煩也不太合理,你可以在jar外面配置一個新的config.properties讓jar里的Resource去讀取。

問題來了,新的config應該放在哪里呢?
答案是隨便,你愛放哪里都可以,只要保證它呆在某個目錄的cache/目錄下,并且在-cp里指定放到地方。

最簡單的就是放在dist目錄里,也就是和.jar同級的目錄,dist/cache/config.properties
執行:java -cp .;resource.jar cn.flipme.util.Resource
這次讀取的就是新的config,而不是jar里面的config
請注意到以上命令中的.;這非常重要,因為它告訴java從當前目錄里找文件
還有一點非常重要,那就是.;出現的位置是在resource.jar前面,所以順序優先了,
當java從.目錄也就是當前目錄里找到了cache/config.properties就停止搜索了。

為了驗證順序的重要性,你不妨試試:
執行:java -cp resource.jar;. cn.flipme.util.Resource
你會發現 ;. 放到resource.jar后面時讀取的config就是jar包里的那個config

好了,搞清楚以上兩點之后,可以再試試在別的地方放置config文件,比如D: estcacheconfig.properties
執行:java -cp D: est;resource.jar cn.flipme.util.Resource
同樣的讀取到的就是D盤里剛剛配置的新config。

就到這里吧,發現自己太唐僧了

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64486.html

相關文章

  • Java基礎:Java核心技術提示易忽略點 Ch4

    摘要:所以,在讀的核心技術的過程中,我記錄下這些所謂的易忽略的問題,這些問題將會持續更新在我的這個的博客下,也算是激勵自己重新挖掘這些基礎問題的內涵。類路徑只是讓能夠通過配置好的全路徑名找到所需的外部類。 開篇Java是一門不那么簡單也不那么復雜的語言,Java里面有很多問題和特性是容易被使用者忽視的,這些問題也許會難住新手,同時也許會是老手不小心跌入的無故之坑,只有精于對基礎的提煉才能最大...

    ytwman 評論0 收藏0
  • Spring-Boot學習筆記

    摘要:學習筆記使用很容易創建一個獨立運行運行內嵌容器準生產級別的基于框架的項目,使用你可以不用或者只需要很少的配置。異常消息如果這個錯誤是由異常引起的。錯誤發生時請求的路徑。 Spring-Boot 1.5 學習筆記 使用Spring Boot很容易創建一個獨立運行(運行jar,內嵌Servlet容器)、準生產級別的基于Spring框架的項目,使用Spring Boot你可以不用或者只需要很...

    curlyCheng 評論0 收藏0
  • Java開發環境不再需要配置classpath

    摘要:原配置代碼原代碼詳解代表了我們的路徑是關于運行環境的類庫,主要是用于的包,如果不使用可以不配置。參見擴展機制如果您從的早期版本升級,那么您的啟動設置可能包括不再需要的類路徑設置。 showImg(https://segmentfault.com/img/remote/1460000019275936?w=600&h=242); 前言: 之前發布了關于java開發環境配置的文章,經過與網...

    dackel 評論0 收藏0
  • Java? 教程(PATH和CLASSPATH

    PATH和CLASSPATH 本節介紹如何在Microsoft Windows,Solaris和Linux上使用PATH和CLASSPATH環境變量,有關最新信息,請參閱安裝Java Development Kit(JDK)軟件包中隨附的安裝說明。 安裝軟件后,JDK目錄將具有如下所示的結構。 showImg(https://segmentfault.com/img/bVbqpb7?w=282&h...

    Ku_Andrew 評論0 收藏0
  • classpath(譯)

    摘要:另外,指定多個類路徑也是可以的。系列使用的的分隔符是系列使用的分隔符是。類文件指定需要執行的文件。在已經制定設置的環境下,環境變量的設置將會無效優先級的問題。當前目錄將會無效。是的核心類,里包含與國際化有關的類。 源自Javaの道日語技術社區原文地址譯者夢夢的幻想鄉見てくれてありがとうござい?。?! クラスパス(譯) classpath 這一章將會講解classpath的概要和設定方法。...

    wudengzan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<