Выполнение другого приложения от Java

Я должен выполнить пакетный файл, который выполняет другое JAVA-приложение. Я не забочусь, выполняется ли это успешно или не, и я не должен фиксировать ошибки.

Действительно ли возможно сделать это с ProcessBuilder? Каковы последствия, если я не фиксирую ошибки?

Однако мое требование состоит в том, чтобы только выполнить другое JAVA-приложение.

17
задан Rob Hruska 12 August 2010 в 15:03
поделиться

6 ответов

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

Runtime.getRuntime().exec(cmd);
  • cmd - команду или путь к приложению.

Также вы можете дождаться выполнения и получить код возврата (чтобы проверить, правильно ли он выполнен) с помощью этого кода:

  Process p = Runtime.getRuntime().exec(cmd);
  p.waitFor();
  int exitVal = p.exitValue();

Полное объяснение различных типов вызовов можно найти здесь http://www.rgagnon.com/javadetails/java-0014.html

4
ответ дан 30 November 2019 в 10:06
поделиться

Вы можете просто использовать Runtime.exec ()

0
ответ дан 30 November 2019 в 10:06
поделиться

Да, это возможно с помощью ProcessBuilder.

Пример ProcessBuilder:

import java.io.*;
import java.util.*;

public class CmdProcessBuilder {
  public static void main(String args[]) 
     throws InterruptedException,IOException 
  {
    List<String> command = new ArrayList<String>();
    command.add(args[0]);


    ProcessBuilder builder = new ProcessBuilder(command);
    Map<String, String> environ = builder.environment();

    final Process process = builder.start();
    InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;
    while ((line = br.readLine()) != null) {
      System.out.println(line);
    }
    System.out.println("Program terminated!");
  }
}

Проверьте эти примеры:

http://www.rgagnon.com/javadetails/java-0014.html

http://www.java-tips.org/java- se-tips / java.util / from-runtime.exec-to-processbuilder.html

25
ответ дан 30 November 2019 в 10:06
поделиться

Подход Runtime.getRuntime().exec() довольно хлопотный, как вы вскоре узнаете.

Взгляните на проект Apache Commons Exec. Он абстрагирует вас от многих общих проблем, связанных с использованием Runtime.getRuntime().exec() и ProcessBuilder API.

Все просто:

String line = "myCommand.exe";
CommandLine commandLine = CommandLine.parse(line);
DefaultExecutor executor = new DefaultExecutor();
executor.setExitValue(1);
int exitValue = executor.execute(commandLine);
29
ответ дан 30 November 2019 в 10:06
поделиться

Я предполагаю, что вы знаете, как выполнить команду с помощью ProcessBuilder .

Выполнение команды из Java всегда должно считывать потоки stdout и stderr из процесса. В противном случае может случиться так, что буфер заполнен, и процесс не может продолжаться из-за записи его блоков stdout или stderr.

4
ответ дан 30 November 2019 в 10:06
поделиться

Если вас не волнует возвращаемое значение, вы можете просто использовать Runtime.getRuntime (). Exec ("path.to.your.batch.file");

1
ответ дан 30 November 2019 в 10:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: