java process builder向环境添加路径不工作

java process builder向环境添加路径不工作,java,macos,intellij-idea,processbuilder,Java,Macos,Intellij Idea,Processbuilder,我在imac和mac笔记本上都使用intellij。当我在mac上运行以下代码时,一切都正常 import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.List; import java.util.Map; public class M

我在imac和mac笔记本上都使用intellij。当我在mac上运行以下代码时,一切都正常

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class Main {
    public ProcessBuilder pb;
     public Main(){
         try {
             pb = new ProcessBuilder();
             pb.directory(new File("~/IdeaProjects/test"));
             Map<String, String> env;
             env = pb.environment();
             env.put("PATH", "/usr/local/fsl/bin/");

         } catch (Exception e) {
             e.printStackTrace();
         }
     }

    public void getMeanImage(String base, String file){
        List<String> cmd = new LinkedList<>();
        cmd.add("fslmaths");
        cmd.add(base + file);
        cmd.add("-Tmean");
        cmd.add(base + file + "_mean");

        pb.command(cmd);

        try {
            String s = "";
            Process p = pb.start();
            BufferedReader stdInput = new BufferedReader(new
                    InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new
                    InputStreamReader(p.getErrorStream()));

            // read the output from the command
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void main(String [ ] args) {
        Main m = new Main();
        m.getMeanImage("", "scan.nii.gz");
    }
}
我得到一个例外:

java.io.IOException: Cannot run program "fslmaths" (in directory "~/IdeaProjects/test"): error=2, No such file or directory
为什么process builder无法在imac上的/usr/local/fsl/bin中找到程序fslmaths

which fslmaths
/usr/local/fsl/bin/fslmaths
提前感谢,,
马丁我找到了解决办法。在intellij的“环境变量”下的“运行/调试配置”中,复选框“包含父环境变量”未启用。

pb.directory(新文件(“~/IdeaProjects/test”)
实际上在主目录中创建了一个新的子目录,而不是一个按字面命名的目录
~
which fslmaths
/usr/local/fsl/bin/fslmaths