0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Java獲取屬性和環(huán)境變量詳細(xì)方法說(shuō)明

Wildesbeast ? 來(lái)源:今日頭條 ? 作者:編程life ? 2020-02-24 13:09 ? 次閱讀

1.簡(jiǎn)介

Java應(yīng)用程序中,Java將自動(dòng)導(dǎo)入包java.lang, 包含從NullPointerException到Object,Math和String的許多常用類。

java.lang.System中的類是 final 類,也就是說(shuō),我們不能繼承它,因此,所有的方法都是靜態(tài)的。

我們研究讀取系統(tǒng)屬性和環(huán)境變量的兩種System方法之間的區(qū)別。

這些方法是getProperty和getenv。

2.使用System.getProperty()

Java平臺(tái)使用Properties對(duì)象提供有關(guān)本地系統(tǒng)和配置的信息,我們將其稱為System Properties。

系統(tǒng)屬性包括諸如當(dāng)前用戶,Java運(yùn)行時(shí)的當(dāng)前版本以及文件路徑名分隔符之類的信息。

在下面的代碼中,我們使用System.getProperty(“ log_dir”)讀取屬性log_dir的值。我們還使用默認(rèn)值參數(shù),因此,如果該屬性不存在,則getProperty返回 "/tmp/log":

String log_dir = System.getProperty("log_dir","/tmp/log");

要在運(yùn)行時(shí)更新系統(tǒng)屬性,可以使用System.setProperty 方法 (盡量不要使用):

System.setProperty("log_dir", "/tmp/log");

我們可以使用propertyName命令行參數(shù)將自己的屬性或配置值傳遞給應(yīng)用程序,格式為

java -jar jarName -DpropertyName=value

在app.jar中將foo的屬性設(shè)置為bar值:

java -jar app -Dfoo =“ bar”

System.getProperty將始終返回String。

3.使用System.getenv()

環(huán)境變量是鍵/值對(duì)和 Properties 一樣。許多操作系統(tǒng)使用環(huán)境變量來(lái)允許將配置信息傳遞到應(yīng)用程序中。

設(shè)置環(huán)境變量的方式因操作系統(tǒng)而異。在Windows中,可以從控制面板使用System Utility應(yīng)用程序,而在Unix中,可以使用shell腳本。

創(chuàng)建進(jìn)程時(shí),默認(rèn)情況下,它會(huì)繼承其父進(jìn)程的克隆環(huán)境變量。

以下代碼段顯示了使用lambda表達(dá)式打印所有環(huán)境變量。

System.getenv().forEach((k, v) -> { System.out.println(k + ":" + v);});

getenv() 返回一個(gè)只讀Map。嘗試向地圖添加值會(huì)拋出 UnsupportedOperationException。

要獲取單個(gè)變量,請(qǐng)使用變量名稱調(diào)用getenv:

String log_dir = System.getenv("log_dir");

另一方面,我們可以從應(yīng)用程序中創(chuàng)建另一個(gè)進(jìn)程,并將新變量添加到其環(huán)境中。

要使用Java創(chuàng)建新流程,我們使用ProcessBuilder類,通過(guò) environment 方法可以添加自定義的環(huán)境變量

ProcessBuilder pb = new ProcessBuilder(args);Map env = pb.environment();env.put("log_dir", "/tmp/log");Process process = pb.start();

4.差異

盡管兩者本質(zhì)上都是為String鍵提供String值的映射,但讓我們看一些區(qū)別:

當(dāng)環(huán)境變量是操作系統(tǒng)變量的不可變副本時(shí),我們可以在運(yùn)行時(shí)更新屬性。

屬性僅包含在Java平臺(tái)內(nèi),而環(huán)境變量在操作系統(tǒng)級(jí)別是全局的-可供同一計(jì)算機(jī)上運(yùn)行的所有應(yīng)用程序使用。

打包應(yīng)用程序時(shí),屬性必須存在,但是我們幾乎可以在任何時(shí)候在操作系統(tǒng)上創(chuàng)建環(huán)境變量。

5.結(jié)論

盡管在概念上相似,但是屬性和環(huán)境變量的應(yīng)用都非常不同。

選擇哪一個(gè)通常是范圍的問(wèn)題。使用環(huán)境變量,可以將同一應(yīng)用程序部署到多臺(tái)計(jì)算機(jī)上以運(yùn)行不同的實(shí)例,并且可以在操作系統(tǒng)級(jí)別甚至在云控制臺(tái)中進(jìn)行配置。無(wú)需重建應(yīng)用程序即可更新配置。

始終記住,getProperty遵循駝峰式約定,而getenv則不遵循。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    3

    文章

    3503

    瀏覽量

    87879
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104089
  • UNIX
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    41334
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux環(huán)境變量總結(jié)

    Linux是一個(gè)多用戶的操作系統(tǒng)。多用戶意味著每個(gè)用戶登錄系統(tǒng)后,都有自己專用的運(yùn)行環(huán)境。而這個(gè)環(huán)境是由一組變量所定義,這組變量被稱為環(huán)境變量
    發(fā)表于 11-14 12:01 ?336次閱讀

    LINUX的環(huán)境變量總結(jié)

    Linux 是一個(gè)多用戶的操作系統(tǒng)。多用戶意味著每個(gè)用戶登錄系統(tǒng)后,都有自己專用的運(yùn)行環(huán)境。而這個(gè)環(huán)境是由一組變量所定義, 這組變量被稱為環(huán)境變量
    發(fā)表于 11-21 11:43 ?403次閱讀

    Linux環(huán)境變量配置的6種方法

    在自定義安裝軟件的時(shí)候,經(jīng)常需要配置環(huán)境變量,下面列舉出各種對(duì)環(huán)境變量的配置方法。
    發(fā)表于 12-05 09:25 ?1218次閱讀

    Linux環(huán)境變量的配置方法

    在自定義安裝軟件的時(shí)候,經(jīng)常需要配置環(huán)境變量,下面列舉出各種對(duì)環(huán)境變量的配置方法
    發(fā)表于 09-27 09:50 ?221次閱讀

    python環(huán)境變量的配置pip

    Python環(huán)境變量的配置和使用是每個(gè)Python開(kāi)發(fā)者都需要了解和掌握的基本技能之一。在本文中,我們將詳細(xì)介紹如何正確配置Python環(huán)境變量,并展示一些常見(jiàn)問(wèn)題的解決方法。我們將從
    的頭像 發(fā)表于 12-15 15:41 ?2099次閱讀

    Allegro環(huán)境變量

    Allegro環(huán)境變量:Allegro 是一套功能強(qiáng)大,但相對(duì)的也是一套相當(dāng)復(fù)雜的系統(tǒng),它提供許多的專屬環(huán)境變量供使用者設(shè)定,讓使用者可以自訂一個(gè)專屬于自己的Allegro 操作環(huán)境,讓整個(gè)
    發(fā)表于 08-21 22:43 ?0次下載

    C語(yǔ)言教程之獲取環(huán)境變量

    C語(yǔ)言教程之獲取環(huán)境變量,很好的C語(yǔ)言資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-25 17:07 ?0次下載

    Java環(huán)境變量配置

    Java環(huán)境變量配置
    發(fā)表于 07-24 11:39 ?0次下載

    python設(shè)置環(huán)境變量

    我們想要運(yùn)行python,需要安裝Python,還要設(shè)置一些環(huán)境變量1,此電腦,右鍵屬性2、高級(jí)系統(tǒng)設(shè)置-> 環(huán)境變量3、在系統(tǒng)變量中找到path,雙擊它,在分號(hào)后面添加python的
    發(fā)表于 11-10 14:49 ?841次閱讀

    嵌入式Linux環(huán)境變量分區(qū)制作

    bootloader的管理,有時(shí)需要將bootloader本身和環(huán)境變量分開(kāi)來(lái)保存,這樣更方便管理。那么如何來(lái)制作一個(gè)環(huán)境變量的鏡像呢?之前有在網(wǎng)上搜索,但是沒(méi)有找到完整切詳細(xì)的制作環(huán)境變量
    發(fā)表于 11-02 10:35 ?8次下載
    嵌入式Linux<b class='flag-5'>環(huán)境變量</b>分區(qū)制作

    LINUX環(huán)境變量總結(jié)

    Linux是一個(gè)多用戶的操作系統(tǒng)。多用戶意味著每個(gè)用戶登錄系統(tǒng)后,都有自己專用的運(yùn)行環(huán)境。而這個(gè)環(huán)境是由一組變量所定義,這組變量被稱為環(huán)境變量
    發(fā)表于 01-29 10:55 ?385次閱讀

    6種Linux環(huán)境變量的配置方法

    在自定義安裝軟件的時(shí)候,經(jīng)常需要配置環(huán)境變量,下面列舉出各種對(duì)環(huán)境變量的配置方法。
    的頭像 發(fā)表于 02-16 10:34 ?1482次閱讀

    idea要配置java環(huán)境變量

    配置Java環(huán)境變量是在安裝Java Development Kit(JDK)的過(guò)程中的一項(xiàng)重要任務(wù)。環(huán)境變量是為了方便在命令行或腳本中使用Java
    的頭像 發(fā)表于 12-06 14:02 ?619次閱讀

    ros怎么設(shè)置環(huán)境變量

    設(shè)置ROS環(huán)境變量是使用ROS的重要步驟之一。本文將詳細(xì)介紹如何設(shè)置ROS環(huán)境變量,包括什么是環(huán)境變量、為什么要設(shè)置ROS環(huán)境變量、如何設(shè)置
    的頭像 發(fā)表于 12-28 13:52 ?1566次閱讀

    Linux環(huán)境變量配置方法

    想必大家平時(shí)工作中也會(huì)配置Linux的環(huán)境變量,但是可能也僅僅是為解決某些工具的運(yùn)行環(huán)境,對(duì)于Linux環(huán)境變量本身的配置學(xué)問(wèn)還沒(méi)深入了解。今天浩道跟大家分享Linux環(huán)境變量的硬核干
    的頭像 發(fā)表于 01-04 09:51 ?412次閱讀