Apache Commons Exec

Frequently Asked Questions

General

  1. How mature is it?
  2. How do I create a complex command line using single and double quotes?
  3. Are child processes automatically killed?
  4. Does commons-exec support java-gcj?
  5. Why is the regression test broken on my Unix box

General

How mature is it?

The code was ported from Apache Ant and extensively tested on various platforms. So there is no reason not to use it and it is very likely better than any home-grown library.

[top]


How do I create a complex command line using single and double quotes?

It is recommended to use CommandLine.addArgument() instead of CommandLine.parse(). Using CommandLine.parse() the implementation tries to figure out the correct quoting using your arguments and file names containing spaces. With CommandLine.addArgument() you can enable/disable quoting depending on your requirements. Having said that this is the recommended approach using Ant anyway.

[top]


Are child processes automatically killed?

This functionality is largely depend on the operating system - on Unix it works mostly and under Windows not at all (see Bug 4770092). In terms of stability and cross-platform support try to start your applications directly and avoid various wrapper scripts.

[top]


Does commons-exec support java-gcj?

Well - one out of 55 regression tests fails. The EnvironmentUtilTest.testGetProcEnvironment() test fails because it detects no environment variables for the current process but there must be one since we require JAVA_HOME to be set. Not sure if this is a plain bug in java-gcj-4.2.1 or requires a work around in commons-exec

[top]


Why is the regression test broken on my Unix box

Please check if the shell scripts under "./src/test/script" are executable - assuming that they are not executable the "testExecute*" and "testExecuteAsync*" test will fail. We try very hard to keep the executable bit but they have somehow the tendency to be lost ...

[top]