Problem with argument containing spaces
---------------------------------------
Key: EXEC-54
URL: https://issues.apache.org/jira/browse/EXEC-54
Project: Commons Exec
Issue Type: Bug
Affects Versions: 1.1
Environment: Mac OsX 10.6.6, JVM 1.6.0
Reporter: Jeremias Rößler
I am new to Commons Exec, so this could also be an error in usage, but...
When I use the {{CommandLine}} class to add a argument that contains spaces,
some quotes are added and are then part of the argument that is given.
For example: When I call {{java "what version"}} I get
{{java.lang.NoClassDefFoundError: what version}}, and when I call {{java
"\"what version\""}} (which contains escaped quotes, that are part of the
command line argument itself), I get {{java.lang.NoClassDefFoundError: "what
version"}}.
So the following test fails, because as you can see in the last line, Apache
Exec is producing the latter version where it should have produced the first
version:
{code:java}
@Test
public void testArgumentQuoting() throws Exception {
String argument = "what version";
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(argument);
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(argument, matcher.group(1));
}
{code}
Note that the same test passes if the space is removed from the argument.
Please also note, that I am not trying to start an external Java process, but
this is merely an example that I assume will work on every developers machine.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira