专注Java教育13年 全国咨询/投诉热线:400-8080-105
首页 学习攻略 Java学习 在Java中访问并配置环境变量

在Java中访问并配置环境变量

更新时间:2022-06-24 10:07:43 来源:动力节点 浏览54次

如何在 Java 中访问环境变量

最常见的方法之一是使用System.getenv(),它接受一个可选String参数。根据是否String传递了参数,方法会返回不同的值。具体来说:

如果 aString被传递并且它匹配内部环境中的一个键Map,那么它的值被返回。如果没有找到匹配的键,null则返回。如果未String传递参数,则返回包含所有环境变量及其值的只读值。Map 的键是环境变量名称,其值是值。java.util.Map

请记住,不同的平台以不同的方式运行,例如,在 UNIX、Linux 和 macOS 上,环境变量区分大小写,而在 Microsoft Windows上则不是。

下面,您可以看到如何使用该方法检索 LinuxSHELL环境变量(包含用户的 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"))
        );
    }
}

如果要提供默认值,请System.genenv()按以下方式调用:

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

如何设置环境变量

UNIX、Linux 和 macOS

在 UNIX、Linux 和 macOS 上,可以通过三种核心方式设置环境变量。

可用于当前会话和所有子进程

您可以使用内置的导出命令初始化环境变量,以便它们可用于当前会话,包括当前会话和在当前会话中启动的任何进程,以及在当前会话中启动的任何进程,如示例中所示以下。

export USER_ID=1

以这种方式设置环境变量不是永久性的。如果要永久设置环境变量,则需要在系统范围的启动文件/etc/profile或用户特定的启动文件之一中设置它,即~/.bash_profile、~/.bash_login , 和~/.profile。

可用于当前会话

您可以初始化一个环境变量,使其可用于当前会话,但不能用于任何子进程,如下例所示,不使用该export命令。

USER_ID=1

可用于特定进程

最后,您可以初始化一个环境变量,使其仅对特定进程可用。当只有该过程需要变量时,这很有帮助。在启动所需的过程时,您可以按照下面的示例对其进行初始化。

USER_ID=1 retrieveUserDetails

微软Windows

在 Microsoft Windows 中设置环境变量略有不同。您可以通过控制面板设置它们,也可以在命令提示符或 PowerShell 控制台中设置它们。下面有后两者的例子。

# 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 文件

虽然以这种方式设置环境变量可能非常有效,但它也会很快变得很麻烦。例如,通过在操作系统的 shell 中设置它们,没有应用程序需要的变量的具体列表,也没有关于变量的用途或它必须是什么数据类型的信息。

鉴于此,除其他原因外,The 12-Factor App建议将配置与代码严格分离。通过使用.env (dotenv) 文件,这种做法很快在整个开发者社区中流行起来。这些是存储键/值对列表的纯文本文件,定义了应用程序工作所需的环境变量,如下例所示。

USER_ID=1
TWILIO_AUTH_TOKEN=1234567890987654321

为了简化项目的开始,出现了一种更常见的做法,即在项目中包含一个.env.example文件,该文件包含所有键,但没有它们的值。当新开发人员开始开发应用程序时,他们会复制该文件,将其命名为.env并为适用于其本地开发环境的每个键设置值。

读取 .env 文件

假设上面的示例是我们项目的.env文件,我们可以使用诸如dotenv-java之类的包来使变量对我们的应用程序可用。

如果你在 Kotlin 中开发,你可以使用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")
        ));
    }
}

代码初始化一个新Dotenv对象 dotenv,并调用读取位于项目根目录中的.envDotenv.configure().load()中的环境变量。之后,用于检索传递给它的对象的值。如果未找到匹配的键,则该方法返回。dotenv.get()Stringnull

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>
返回顶部