通过java processBuilder运行cmd命令

时间:2016-10-06 02:39:31

标签: java cmd processbuilder

我正在尝试使用ProcessBuild来运行cmd语句。

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start");
Process p = pb.start();

但是,我只能打开cmd.exe

我不知道如何向ProcessBuild添加语句,以便文件夹中的所有jar都可以运行。 通常,我在stanford-corenlp-full-2015-12-09文件夹中打开cmd,并添加此语句以运行: java -mx4g -cp“*”edu.stanford.nlp.pipeline.StanfordCoreNLPServer
enter image description here

那么如何编写这个语句通过java运行cmd命令? 由于语句包含“*”,我收到错误。 如何编辑ProcessBuilder以便我可以运行该语句? 非常感谢

1 个答案:

答案 0 :(得分:2)

您可以设置要执行命令的目录

    List<String> cmds = Arrays.asList("cmd.exe", "/C", "start", "java", "-mx4g", "-cp", "*", "edu.stanford.nlp.pipeline.StanfordCoreNLPServer");
    ProcessBuilder builder = new ProcessBuilder(cmds);
    builder.directory(new File("D:/stanford-corenlp-full-2015-12-09"));
    Process proc = builder.start();

UPDATE 按照评论中的要求

    OutputStream out = proc.getOutputStream();
    new Thread(() -> {
        try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out))) {
            bw.write("[command here]");
            bw.flush();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

    }).start();