簡體   English   中英

Java程序設置環境變量

[英]Java program setting an environment variable

有沒有辦法讓Java程序在Windows和/或Linux系統中設置環境變量?

我正在為桌面系統創建Java應用程序,希望可以在Windows,Linux和Mac中使用。 但是我不確定是否可以讓安裝程序為應用程序設置環境變量。

環境只會被傳遞一個子進程,從來沒有一個子進程 因此,如果您想要的是能夠寫這樣的東西:

java ProgramThatSetsAnEnvironmentVariable
java ProgramThatUsesTheEnvironmentVariable

那不行,那是不可能的。

但是,如果您要讓Java程序運行某個程序,並且希望它傳遞其他環境變量,那么可以,可以使用java.lang.ProcessBuilderenvironment()方法

這可以通過反射來實現。

使用以下代碼:

public static void setEnv(String key, String value) {
    try {
        Map<String, String> env = System.getenv();
        Class<?> cl = env.getClass();
        Field field = cl.getDeclaredField("m");
        field.setAccessible(true);
        Map<String, String> writableEnv = (Map<String, String>) field.get(env);
        writableEnv.put(key, value);
    } catch (Exception e) {
        throw new IllegalStateException("Failed to set environment variable", e);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM