OK, I think I finally understand why you want to do getAbsoluteFile() here.  If we use the File parameter to exec() the child process will cd into the new location and then run the executable.  If the executable name wasn't an absolute path, then execution would fail later.

So this makes sense to do as part of searchPath and just make it less likely we'll run into that error.