Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在windows的ProcessBuilder java中设置PATH环境变量_Java_Environment Variables_Processbuilder - Fatal编程技术网

如何在windows的ProcessBuilder java中设置PATH环境变量

如何在windows的ProcessBuilder java中设置PATH环境变量,java,environment-variables,processbuilder,Java,Environment Variables,Processbuilder,我正在尝试为java中的process builder设置PATH环境变量,我尝试了以下操作: ProcessBuilder pb = new ProcessBuilder(command); Map<String, String> mp = pb.environment(); mp.put("Path", "myPath"); pb.start(); ProcessBuilder pb=新的ProcessBuilder(命令); Map mp=pb.environment();

我正在尝试为java中的process builder设置PATH环境变量,我尝试了以下操作:

ProcessBuilder pb = new ProcessBuilder(command);
Map<String, String> mp = pb.environment();
mp.put("Path", "myPath");
pb.start();
ProcessBuilder pb=新的ProcessBuilder(命令);
Map mp=pb.environment();
mpput(“Path”、“myPath”);
pb.start();

但以下操作不起作用,process builder选择了默认的系统路径。在我目前的项目中,我遇到了他没有帮助我的这个技巧。我应该怎么做才能避免这个问题呢?

路径在一个新进程中使用。它不用于查找您的命令

您可以尝试下一个解决方案。运行cmd.exe(bash等),然后运行命令

例如:

public class Test {

    public static void main(String[] args) throws IOException {
        ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start", "mystuff.exe");
        Map<String, String> envs = pb.environment();
        System.out.println(envs.get("Path"));
        envs.put("Path", "C:\\mystuff");
        pb.redirectErrorStream();
        pb.start();

    }

}
公共类测试{
公共静态void main(字符串[]args)引发IOException{
ProcessBuilder pb=新的ProcessBuilder(“cmd.exe”,“C”,“start”,“mystuff.exe”);
Map envs=pb.environment();
System.out.println(envs.get(“Path”);
环境put(“路径”,“C:\\mystuff”);
pb.redirectErrorStream();
pb.start();
}
}

能否打印所有环境地图值?这可能只是一个案例问题-路径映射设置了路径和路径变量。我在上面相同的链接中看到了迈克·克拉克的答案,我想知道他所提到的行为是否正确。如果是这样的话,我就不知所措了。你说的“不起作用”是什么意思?我刚刚检查过,它对我有效。我在C:\mystuff中有一个可执行文件mystuff.exe,但它不在PATH变量中,所以我将它添加到PATH变量中,并尝试使用ProcessBuilder命令just:mystuff.exe,尽管设置了PATH,但它抱怨找不到mystuff.exe文件。所以我不得不求助于使用完整路径,而不仅仅是mystuff.exe。我认为pb.environment()为进程设置了环境变量,但它不使用它的路径在构造函数中查找注释。