Simple Library to make the process of executing system commands through java a simple task. The library is thread-safe, can be used to execute multiple commands asynchronously.
How to
If you want to execute a command, and redirect the output to the console:
try {
CommandExecutor.execute("ping google.com");
}
catch (IOException e) {
e.printStackTrace();
}
However, this library gives you more control over the commands being executed;
You can use the
CommandBuilderas wrapper for the parts that form the command line you want to execute; such as arguments (CommandBuilder#withArgs) and options(CommandBuilder#withOptions).You can redirect the
standardanderroroutputs to any object You want, just implement theAppenderinterface.You can retrieve the
exit codeof the process, or abort the process, by simply using theProcessMonitorandExecutionReportobjects.
An advanced example:
Command cmd = new CommandBuilder().forCommandLine("ping").withArgs("google.com").build();
ExecutionOutputPrinter eop = new ExecutionOutputPrinter(new Appender() {
@Override
public void appendStdText(String text) {
// your code to show std output lines.
}
@Override
public void appendErrText(String text) {
// your code to show error lines.
}
});
try {
ProcessMonitor pMonitor = CommandExecutor.execute(cmd, null, eop); //execute the command, redirect the output to eop.
ExecutionReport report = pMonitor.getExecutionReport(); //blocks until the process finishes or gets aborted.
String commandLine = cmd.string();
int exitCode = report.exitValue();
System.out.printf("command line: %s\nexecution finished with exit code: %d\n\n", commandLine, exitCode);
}
catch (UnrecognisedCmdException e) {
System.err.println(e);
}
to abort a running process (command), you can use the ProcessMonitor instance that you obtained previously:
pMonitor.abort();