Uploaded image for project: 'Commons Exec'
  1. Commons Exec
  2. EXEC-54

Problem with argument containing spaces


    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.1
    • Fix Version/s: None
    • Environment:

      Mac OsX 10.6.6, JVM 1.6.0


      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:

      	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);
      		CommandLine cmdLine = new CommandLine("java");
      		executor.execute(cmdLine, resultHandler);
      		String resultPattern = "Exception in thread \"main\" java\\.lang\\.NoClassDefFoundError: ([\\w \"]+)";
      		Pattern pattern = Pattern.compile(resultPattern);
      		Matcher matcher = pattern.matcher(out.toString());
      		// Note: Result should be <what version> and NOT <"what version">!
      		Assert.assertEquals(argument, matcher.group(1));

      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.




            • Assignee:
              sgoeschl Siegfried Goeschl
              roesslerj Jeremias Rößler
            • Votes:
              2 Vote for this issue
              7 Start watching this issue


              • Created: