无法使用ProcessBuilder运行Unix命令

时间:2015-01-30 04:58:30

标签: java

我正在使用Windows并安装了来自SourceForge的Unix Utils。普通命令(例如lscat)在 Windows CMD 中工作,但是当我尝试使用 Java <中的ProcessBuilder运行它们时/ strong>,我收到此错误代码:Cannot run program "ls": CreateProcess error=2, The system cannot find the file specified

我的代码如下:

        ....
        BufferedReader console = new BufferedReader
            (new InputStreamReader(System.in));
        commandLine = console.readLine();
        cmd = new ArrayList<String>();
        String[] commands = commandLine.split(" ");
        for(String command: commands){
            if(!command.equals(" ")){
                cmd.add(command);
            }
        }
        System.out.println(cmd.toString());

try {
                System.out.println("trying to run ls");
                ProcessBuilder pBuilder = new ProcessBuilder(cmd);
                Process p = pBuilder.start();
            }catch(IOException e){
                System.out.println("Invalid command.");
                System.out.println(e.getMessage());
            }

1 个答案:

答案 0 :(得分:0)

终于找到了解决方案,但我实际上并不知道这是否是解决问题的最佳方法。

我正在上课,我的教授告诉我将一些必要的文件从UnxUtils复制到System32。

这适用于在Windows cmd shell上调用Unix命令,但不能通过Java ProcessBuilder调用。我将JDK根添加到一个名为JAVA_HOME的环境变量中,添加了UnxUtils/binUnxUtils/usr/local/wbin然后重新启动了我的IDE。它现在有效。