Jim*_*mmy 8 java environment-variables runtime.exec java-6
可能重复:
如何从Java设置环境变量?
我正在尝试设置一个环境变量,并将其读回以验证它是否已实际设置.
我有以下内容:
import java.io.IOException;
public class EnvironmentVariable
{
public static void main(String[] args) throws IOException
{
Runtime.getRuntime().exec("cmd.exe set FOO=false");
String s = System.getenv("FOO");
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它似乎FOO始终为null,这意味着它可能未正确设置.
我的exec命令是否正确?javadocs声明它可以将一个字符串参数作为命令.
有任何想法吗?
sud*_*ode 17
有重载的exec方法,您可以在其中包含一组环境变量.例如exec(String command,String [] envp).
这是一个在exec的子进程中设置env变量的示例(有证据):
public static void main(String[] args) throws IOException {
String[] command = { "cmd", "/C", "echo FOO: %FOO%" };
String[] envp = { "FOO=false" };
Process p = Runtime.getRuntime().exec(command, envp);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s = reader.readLine();
System.err.println(s);
}
Run Code Online (Sandbox Code Playgroud)
但是,这会将变量设置为已创建进程的env,而不是当前(Java)进程的env.
类似地,如果您使用exec任务从Ant创建进程(正如您在注释中提到的那样),那么您可以使用嵌套env元素将环境变量传递给子进程,例如
<exec executable="whatever">
<env key="FOO" value="false"/>
</exec>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28866 次 |
| 最近记录: |