The way your Java program deals with external command invocations can be Runtime.exec, java.lang.ProcessBuilder or calling a web server wrapper that avoids huge memory leaking (JVM-Fork() problem) as I have posted before.
If you are using Runtime.exec without arrays for parameters then most likely you will face an "IllegalArgumentException" starting with version 1.7.0_21 in Windows platforms. The message states "Executable name has embedded quote, split the arguments". The solution as explained by Oracle is to use an array if you stick to Runtime.exec or migrate to java.lang.ProcessBuilder. Please refer to http://www.oracle.com/technetwork/java/javase/7u21-relnotes-1932873.html#jruntime for details.
I ignore if java7 has already corrected for good the momentary overcommit of swap space as a result of using fork() but we have found using the wrapper mentioned above has done the trick so far for us but for sure using a wrapper is not always an option.