Apache Commons Exec produce demasiadas citas para argumentos que contienen espacios?

O hay un error en Apache Commons Exec, o estoy usando la API incorrectamente, pero cuando uso elCommandLine clase para agregar un argumento que contiene espacios, se agregan algunas comillas y luego son parte del argumento que se da.

Por ejemplo: cuando llamojava "what version" yo obtengojava.lang.NoClassDefFoundError: what versiony cuando llamojava "\"what version\"" (que contiene comillas escapadas, que son parte del argumento de la línea de comando en sí), obtengojava.lang.NoClassDefFoundError: "what version".

Entonces, la siguiente prueba falla, porque como puede ver en la última línea, Apache Exec está produciendo la última versión donde debería haber producido la primera versión:

@Test
public void testArgumentQuoting() throws Exception {
    DefaultExecutor executor = new DefaultExecutor();
    DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    PumpStreamHandler streamHandler = new PumpStreamHandler(out, out);
    executor.setStreamHandler(streamHandler);
    CommandLine cmdLine = new CommandLine("java");
    cmdLine.addArgument("what version");
    executor.execute(cmdLine, resultHandler);
    resultHandler.waitFor();
    String resultPattern = "Exception in thread \"main\" java\\.lang\\.NoClassDefFoundError: ([\\w \"]+)";
    Pattern pattern = Pattern.compile(resultPattern);
    Matcher matcher = pattern.matcher(out.toString());
    Assert.assertTrue(matcher.find());
    // Note: Result should be <what version> and NOT <"what version">!
    Assert.assertEquals("what version", matcher.group(1));
}

Ahora quiero saber:

¿Es esto un error?Si es así: ¿hay alguna forma de evitar este problema (una solución alternativa)?Si no: ¿qué estoy haciendo mal?

Editar: Estoy tratando de ejecutar un proceso que creo que pocas personas tendrán en su máquina. Entonces estoy usandojava en cambio, este comando debería estar disponible en todas las máquinas donde las personas desarrollan Java. Mi punto es que el argumento de tiempo de ejecución incorrecto se pasa al proceso externo, que contiene comillas escapadas, que no debería.

Editar: hice de esto un error archivado para el ejecutivo de commons enJira.

Respuestas a la pregunta(5)

Su respuesta a la pregunta