Запуск команд cmd через java ProcessBuilder

#java #cmd #processbuilder

#java #cmd #processbuilder

Вопрос:

Я пытаюсь использовать ProcessBuild для запуска инструкции cmd.

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

Однако я могу открыть только cmd.exe

Я не знаю, как добавить оператор в ProcessBuild, чтобы все jar в папке могли запускаться. Обычно я открываю cmd в stanford-corenlp-full-2015-12-09 папку и добавьте эту инструкцию для запуска: java -mx4g -cp «*» edu.stanford.nlp.pipeline.StanfordCoreNLPServer
введите описание изображения здесь

Итак, как написать это утверждение Запуск команд cmd через java?? Я получаю ошибки, поскольку оператор состоит из «*». Как отредактировать ProcessBuilder, чтобы я мог запустить инструкцию? Большое спасибо

Ответ №1:

Вы можете указать каталог, из которого будет выполняться команда

     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();
  

ОБНОВЛЕНИЕ в соответствии с просьбой в комментариях

     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();
  

Комментарии:

1. Большое спасибо! Это работает. могу я задать один вопрос? Как закрыть cmd программы stanford с помощью Java?

2. Извините, могу ли я узнать, как закрыть CMD в этом случае после завершения использования Stanfordserver?????? @Saravana