[英]Java program setting an environment variable
有沒有辦法讓Java程序在Windows和/或Linux系統中設置環境變量?
我正在為桌面系統創建Java應用程序,希望可以在Windows,Linux和Mac中使用。 但是我不確定是否可以讓安裝程序為應用程序設置環境變量。
環境只會被傳遞到一個子進程,從來沒有出一個子進程 。 因此,如果您想要的是能夠寫這樣的東西:
java ProgramThatSetsAnEnvironmentVariable
java ProgramThatUsesTheEnvironmentVariable
那不行,那是不可能的。
但是,如果您要讓Java程序運行某個程序,並且希望它傳遞其他環境變量,那么可以,可以使用java.lang.ProcessBuilder
的environment()
方法 。
這可以通過反射來實現。
使用以下代碼:
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.