大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 在Java中訪問并配置環(huán)境變量

在Java中訪問并配置環(huán)境變量

更新時(shí)間:2022-06-24 10:07:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1911次

如何在 Java 中訪問環(huán)境變量

最常見的方法之一是使用System.getenv(),它接受一個(gè)可選String參數(shù)。根據(jù)是否String傳遞了參數(shù),方法會(huì)返回不同的值。具體來說:

如果 aString被傳遞并且它匹配內(nèi)部環(huán)境中的一個(gè)鍵Map,那么它的值被返回。如果沒有找到匹配的鍵,null則返回。如果未String傳遞參數(shù),則返回包含所有環(huán)境變量及其值的只讀值。Map 的鍵是環(huán)境變量名稱,其值是值。java.util.Map

請記住,不同的平臺以不同的方式運(yùn)行,例如,在 UNIX、Linux 和 macOS 上,環(huán)境變量區(qū)分大小寫,而在 Microsoft Windows上則不是。

下面,您可以看到如何使用該方法檢索 LinuxSHELL環(huán)境變量(包含用戶的 shell)的示例。

package com.settermjd.twilio.envvars;
public class Main {
    public static void main(String[] args) {
        System.out.println(
            String.format("The current shell is: %s.", System.getenv("SHELL"))
        );
    }
}

如果要提供默認(rèn)值,請System.genenv()按以下方式調(diào)用:

System.getenv().getOrDefault("SHELL", "/bin/bash")

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

UNIX、Linux 和 macOS

在 UNIX、Linux 和 macOS 上,可以通過三種核心方式設(shè)置環(huán)境變量。

可用于當(dāng)前會(huì)話和所有子進(jìn)程

您可以使用內(nèi)置的導(dǎo)出命令初始化環(huán)境變量,以便它們可用于當(dāng)前會(huì)話,包括當(dāng)前會(huì)話和在當(dāng)前會(huì)話中啟動(dòng)的任何進(jìn)程,以及在當(dāng)前會(huì)話中啟動(dòng)的任何進(jìn)程,如示例中所示以下。

export USER_ID=1

以這種方式設(shè)置環(huán)境變量不是永久性的。如果要永久設(shè)置環(huán)境變量,則需要在系統(tǒng)范圍的啟動(dòng)文件/etc/profile或用戶特定的啟動(dòng)文件之一中設(shè)置它,即~/.bash_profile、~/.bash_login , 和~/.profile。

可用于當(dāng)前會(huì)話

您可以初始化一個(gè)環(huán)境變量,使其可用于當(dāng)前會(huì)話,但不能用于任何子進(jìn)程,如下例所示,不使用該export命令。

USER_ID=1

可用于特定進(jìn)程

最后,您可以初始化一個(gè)環(huán)境變量,使其僅對特定進(jìn)程可用。當(dāng)只有該過程需要變量時(shí),這很有幫助。在啟動(dòng)所需的過程時(shí),您可以按照下面的示例對其進(jìn)行初始化。

USER_ID=1 retrieveUserDetails

微軟Windows

在 Microsoft Windows 中設(shè)置環(huán)境變量略有不同。您可以通過控制面板設(shè)置它們,也可以在命令提示符或 PowerShell 控制臺中設(shè)置它們。下面有后兩者的例子。

# Set USER_ID in the Windows Command Prompt
set USER_ID=1
# Set USER_ID in the Windows PowerShell console
$Env:USER_ID = 1

使用 .env 文件

雖然以這種方式設(shè)置環(huán)境變量可能非常有效,但它也會(huì)很快變得很麻煩。例如,通過在操作系統(tǒng)的 shell 中設(shè)置它們,沒有應(yīng)用程序需要的變量的具體列表,也沒有關(guān)于變量的用途或它必須是什么數(shù)據(jù)類型的信息。

鑒于此,除其他原因外,The 12-Factor App建議將配置與代碼嚴(yán)格分離。通過使用.env (dotenv) 文件,這種做法很快在整個(gè)開發(fā)者社區(qū)中流行起來。這些是存儲鍵/值對列表的純文本文件,定義了應(yīng)用程序工作所需的環(huán)境變量,如下例所示。

USER_ID=1
TWILIO_AUTH_TOKEN=1234567890987654321

為了簡化項(xiàng)目的開始,出現(xiàn)了一種更常見的做法,即在項(xiàng)目中包含一個(gè).env.example文件,該文件包含所有鍵,但沒有它們的值。當(dāng)新開發(fā)人員開始開發(fā)應(yīng)用程序時(shí),他們會(huì)復(fù)制該文件,將其命名為.env并為適用于其本地開發(fā)環(huán)境的每個(gè)鍵設(shè)置值。

讀取 .env 文件

假設(shè)上面的示例是我們項(xiàng)目的.env文件,我們可以使用諸如dotenv-java之類的包來使變量對我們的應(yīng)用程序可用。

如果你在 Kotlin 中開發(fā),你可以使用dotenv-kotlin。

您可以在下面的代碼示例中看到使用包的示例。

package com.settermjd.twilio.envvars;
import io.github.cdimascio.dotenv.Dotenv;
import io.github.cdimascio.dotenv.DotenvException;
public class Main {
    public static void main(String[] args) {
        Dotenv dotenv = null;
        dotenv = Dotenv.configure().load();
        System.out.println(String.format(
            "Hello World. Shell is: %s. Name is: %s",
            System.getenv("SHELL"),
            dotenv.get("NAME")
        ));
    }
}

代碼初始化一個(gè)新Dotenv對象 dotenv,并調(diào)用讀取位于項(xiàng)目根目錄中的.envDotenv.configure().load()中的環(huán)境變量。之后,用于檢索傳遞給它的對象的值。如果未找到匹配的鍵,則該方法返回。dotenv.get()Stringnull

提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 婷婷六月激情在线综合激情 | 真人一级一级特黄高清毛片 | 91长腿女神清纯大又嫩在线 | 成年性午夜免费视频网站不卡 | 亚洲国产伦理 | 日日日日日 | 亚洲精品一区二区三区在线看 | 日韩国产欧美在线观看 | 一本一本久久a久久精品综合 | 欧美日日日 | 久久99精品久久久久久首页 | 国产成人毛片视频不卡在线 | 深夜福利网站在线观看 | 狠狠色噜噜狠狠狠米奇9999 | 久久精品国产2020 | 女人18毛片a级毛片免费 | 日本不卡在线播放 | 青青草国产一区二区三区 | 国产高清视频在线免费观看 | 亚洲黄色成人 | 国产成人精品免费视频网页大全 | 欧美综合精品 | 欧美成人一区二区三区在线视频 | 免费网站日本永久免费观看 | 色婷婷久 | 亚洲综合色婷婷久久 | 欧美一级成人免费大片 | 日韩爱爱 | 视频二区 素人 欧美 日韩 | 久久国产精品只做精品 | 国产精品原创巨作无遮挡 | 天堂精品视频 | 亚洲国产天堂在线网址 | 国产精品你懂的在线播放 | 国产福利视频一区二区三区四区 | 中文字幕第一区 | 久久精品国产影库免费看 | 国产精品久久久久免费视频 | 国产精品亚洲专区在线播放 | 亚洲国产欧美日韩一区二区三区 | 福利姬在线播放 |