繁体   English   中英

无法在 Java 中设置环境变量

[英]Cannot set environment variable in Java

我在 Java 中设置环境变量时遇到问题,因为当我执行strings /proc/<PID>/environ时,我没有看到 linux 中设置的环境变量。

在 Java 中,我通过set("my-key", "true")进行设置并验证它是否已使用get("my-key")进行设置。 然后我的应用程序没有按预期运行。 执行strings /proc/<PID>/environ显示 env var (my-key) 尚未设置。 难道我做错了什么?

public static String get(String key) {
    return System.getenv(key);
}

public static void set(String key, String value) {
    getAll().put(key, value);
}

public static void remove(String key) {
    getAll().remove(key);
}

public static Map<String, String> getAll() {
    try {
        Map<String, String> env = System.getenv();
        Class<?> cl = env.getClass();
        Field field = cl.getDeclaredField("m");
        field.setAccessible(true);
        return (Map<String, String>) field.get(env);
    } catch (Exception e) {
        throw new IllegalStateException("Failed to get environment variables", e);
    }
}

环境变量是不可变的。 您不能从当前进程内部设置它们。

考虑其他解决方案,如系统属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM