#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