Embedding command line in Java applications

Are you tired of issues with Runtime.getRuntim().exec()?

I was.

So I decided to create a small library to handle all the issues. Features include:

  • It's easy to redirect stdin, stderr and stdout to appropriate Java Readers and Writers, so you can now embed operating-system processes inside your applications.
  • It's very easy to cancel a running process, by using the Future<Integer> interface.
  • Automatically handles pipipng process streams into Java streams (and viceversa).
  • Runs well in Linux and Windows. Probably runs well in Solaris and MacOSX too (haven't tried yet though)
  • You can specify a working directory for the running process.
  • Very small library (just one final class and two interfaces).

Sources and binaries available.

How to use?

You can see the Javadoc. Basic usage is as follows:

// Obtain a process executor
ProcessExecutor executor =
   ProcessExecutorFactory.getDefault();

// Launch the process
Future<Integer> process = executor.execute(
   ProcessInputOutput.DEFAULT, null, "/bin/ls -ali");

// If you want to kill the process write:
process.cancel( true );


// To get the exit status of the process use:
System.out.println( process.get() );

Now, that's easy, isn't it?

License

This software is licensed under the GNU GPL v2.0.