java - 在java中获取环境变量的更新副本

标签 java environment-variables

我想使用 java 获取环境变量的最新/更新副本。

如果有人在运行程序后更改了特定的环境变量,Java 不会返回最新的副本。

请使用下面的示例代码来测试该场景。

import javax.swing.JOptionPane;

public class Test extends Thread {
    public static void main(String[] args) {
        Test test = new Test();
        test.start();
    }

    @Override
    public void run() {
        super.run();
        while (true) {
            JOptionPane.showMessageDialog(null, System.getenv("A"));
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

更新: 也尝试过 ProcessBuilder

ProcessBuilder processBuilder = new ProcessBuilder("echo %A%");
System.out.println(processBuilder.environment().get("A"));

最佳答案

环境变量在JVM启动时设置,不会改变。

对于所有 Windows 程序来说通常都是如此。例如。启动命令提示符,通过 Windows 控制面板更改环境变量,命令提示符将看不到看到更改的值。

只有在更改之后打开的命令提示符才能看到更改。

关于java - 在java中获取环境变量的更新副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39242102/

相关文章:

java - CentOS 上的 Artifactory 环境变量

java - 我们如何在HandlerInterceptorAdapter中处理异常?

java - 使用属性打开/关闭 Proguard

java - ArrayList 到不同的类

spring-boot - 无法解析字符串值 'XXX' 中的占位符 "${XXX}"

environment-variables - 如何为tomcat创建环境变量?

java - Eclipse 中缺少项目依赖项

java - 使用MyBatis在Java中执行Filename.sql文件

java - Windows 10 cmd 切换JDK版本

git配置环境变量