Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
Seen on Mac OS X, probably applies to other environments.
Description
I've noticed that the local runtime drops the last classpath entry when creating the Driver command.
TLDR; The fix is removing double quotes from the classpath. Apparently, java does not do any quote removal or anything of that sort for its options.
JavaLaunchCommandBuilder#setClassPath adds double quotes to the classpath. But, LocalClasspathProvider doesn't remove these double quotes, so the first and last entry have a fleeting quote (e.g. last-entry.jar") and thus discarded when the file is not found. By chance, the first entry is always reef/local/* which isn't a file, and gets added back anyway via ClasspathProvider!
As far as I can tell, LocalClasspathProvider isn't wrong to use the string as-is (with the quotes). It's really JavaLaunchCommandBuilder#setClassPath's fault for adding them.
I found this while tracking down a bug with yunseong. Ironically, we've also been discussing JavaLaunchCommandBuilder at REEF-69.