首页 > 解决方案 > 如何使用java程序设置系统变量

问题描述

我想在 JAVA 中设置环境变量。为此,我在互联网上搜索了很多并得到以下代码

ProcessBuilder pb = new ProcessBuilder();
Map<String, String> env = pb.environment();
env.put("DS_HOME", "C:\\MyFile\\jboss-eap-6.4\\modules\\com\\mycom\\library\\d_home");
env.put("CS_HOME", "C:\\MyFile\\jboss-eap-6.4\\modules\\com\\mycom\\library\\c_home");
pb.command("cmd.exe", "/c", "echo", "%DS_HOME%");
pb.command("cmd.exe", "/c", "echo", "%CS_HOME%");
try {
    pb.inheritIO().start();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Map<String, String> getenv = System.getenv();
Set<Entry<String,String>> entrySet = getenv.entrySet();
for (Entry<String, String> entry : entrySet) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

执行此代码后,我没有获得使用 ProcessBuilder 设置的自定义变量。请帮我解决这个问题。我想执行一个需要一些环境变量的服务,并且我正在尝试使用 java 代码设置系统变量。

标签: javaenvironment-variablessystem-variable

解决方案


如果要更改当前Java进程的系统变量,则必须通过JNI

通过 JNI https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo043在 JVM 中设置环境变量


推荐阅读