[Bug report] Runner constructs invalid command if parent process's arguments contain spaces
Tomasz Grabiec
tgrabiec at gmail.com
Mon Apr 29 07:03:24 PDT 2013
Hi,
I tried to use JMH to run a harness from InteliJ IDE as a convenience and
noticed that it fails.
Run config:
- main class: org.openjdk.jmh.Main
- JVM args: ".*JMHSample_02_BenchmarkTypes.*" -i 5 -r 1s -v
Output:
(in the attached file)
The problem is not limited to using IntelliJ but results from the fact
IntelliJ runner sets some java properties to paths which contain spaces:
-Didea.launcher.bin.path=C:\Program Files (x86)...
After applying the following change the problem is fixed for me. I realize
though this is not how a proper escaping should look like.
jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java
@@ -204,7 +204,7 @@
}
for (String arg : args) {
- jvmArguments.append(arg);
+ jvmArguments.append("\"").append(arg).append("\"");
jvmArguments.append(' ');
}
Regards,
Tomasz Grabiec
-------------- next part --------------
C:\java\jre7\bin\java -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\bin" -Dfile.encoding=UTF-8 -classpath "C:\java\jre7\lib\charsets.jar;C:\java\jre7\lib\deploy.jar;C:\java\jre7\lib\javaws.jar;C:\java\jre7\lib\jce.jar;C:\java\jre7\lib\jfr.jar;C:\java\jre7\lib\jfxrt.jar;C:\java\jre7\lib\jsse.jar;C:\java\jre7\lib\management-agent.jar;C:\java\jre7\lib\plugin.jar;C:\java\jre7\lib\resources.jar;C:\java\jre7\lib\rt.jar;C:\java\jre7\lib\ext\access-bridge-32.jar;C:\java\jre7\lib\ext\dnsns.jar;C:\java\jre7\lib\ext\jaccess.jar;C:\java\jre7\lib\ext\localedata.jar;C:\java\jre7\lib\ext\sunec.jar;C:\java\jre7\lib\ext\sunjce_provider.jar;C:\java\jre7\lib\ext\sunmscapi.jar;C:\java\jre7\lib\ext\sunpkcs11.jar;C:\java\jre7\lib\ext\zipfs.jar;C:\cygwin\home\Tomek\src\benchmarks\target\classes;C:\Users\Tomek\.m2\repository\org\openjdk\jmh\jmh-core\1.0-SNAPSHOT\jmh-core-1.0-SNAPSHOT.jar;C:\Users\Tomek\.m2\repository\args4j\args4j\2.0.16\args4j-2.0.16.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain org.openjdk.jmh.Main .*JMHSample_02_BenchmarkTypes.* -i 5 -r 1s -v
Benchmarks:
org.openjdk.jmh.samples.generated.avgtime.JMHSample_02_BenchmarkTypes.measureAvgTime
org.openjdk.jmh.samples.generated.oneshot.JMHSample_02_BenchmarkTypes.measureSingleShot
org.openjdk.jmh.samples.generated.sampletime.JMHSample_02_BenchmarkTypes.measureSamples
org.openjdk.jmh.samples.generated.throughput.JMHSample_02_BenchmarkTypes.measureThroughput
# Measurement Section
Forking using command: C:\java\jre7\bin\java.exe -Didea.launcher.port=7534 -Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\bin -Dfile.encoding=UTF-8 -cp "C:\java\jre7\lib\charsets.jar;C:\java\jre7\lib\deploy.jar;C:\java\jre7\lib\javaws.jar;C:\java\jre7\lib\jce.jar;C:\java\jre7\lib\jfr.jar;C:\java\jre7\lib\jfxrt.jar;C:\java\jre7\lib\jsse.jar;C:\java\jre7\lib\management-agent.jar;C:\java\jre7\lib\plugin.jar;C:\java\jre7\lib\resources.jar;C:\java\jre7\lib\rt.jar;C:\java\jre7\lib\ext\access-bridge-32.jar;C:\java\jre7\lib\ext\dnsns.jar;C:\java\jre7\lib\ext\jaccess.jar;C:\java\jre7\lib\ext\localedata.jar;C:\java\jre7\lib\ext\sunec.jar;C:\java\jre7\lib\ext\sunjce_provider.jar;C:\java\jre7\lib\ext\sunmscapi.jar;C:\java\jre7\lib\ext\sunpkcs11.jar;C:\java\jre7\lib\ext\zipfs.jar;C:\cygwin\home\Tomek\src\benchmarks\target\classes;C:\Users\Tomek\.m2\repository\org\openjdk\jmh\jmh-core\1.0-SNAPSHOT\jmh-core-1.0-SNAPSHOT.jar;C:\Users\Tomek\.m2\repository\args4j\args4j\2.0.16\args4j-2.0.16.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\lib\idea_rt.jar" org.openjdk.jmh.ForkedMain org.openjdk.jmh.samples.generated.avgtime.JMHSample_02_BenchmarkTypes.measureAvgTime -i 5 -r 1s -v true --hostName 169.254.35.151 --hostPort 57251
Error: Could not find or load main class Files
WARNING: Forked process returned code: 1
Forking using command: C:\java\jre7\bin\java.exe -Didea.launcher.port=7534 -Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\bin -Dfile.encoding=UTF-8 -cp "C:\java\jre7\lib\charsets.jar;C:\java\jre7\lib\deploy.jar;C:\java\jre7\lib\javaws.jar;C:\java\jre7\lib\jce.jar;C:\java\jre7\lib\jfr.jar;C:\java\jre7\lib\jfxrt.jar;C:\java\jre7\lib\jsse.jar;C:\java\jre7\lib\management-agent.jar;C:\java\jre7\lib\plugin.jar;C:\java\jre7\lib\resources.jar;C:\java\jre7\lib\rt.jar;C:\java\jre7\lib\ext\access-bridge-32.jar;C:\java\jre7\lib\ext\dnsns.jar;C:\java\jre7\lib\ext\jaccess.jar;C:\java\jre7\lib\ext\localedata.jar;C:\java\jre7\lib\ext\sunec.jar;C:\java\jre7\lib\ext\sunjce_provider.jar;C:\java\jre7\lib\ext\sunmscapi.jar;C:\java\jre7\lib\ext\sunpkcs11.jar;C:\java\jre7\lib\ext\zipfs.jar;C:\cygwin\home\Tomek\src\benchmarks\target\classes;C:\Users\Tomek\.m2\repository\org\openjdk\jmh\jmh-core\1.0-SNAPSHOT\jmh-core-1.0-SNAPSHOT.jar;C:\Users\Tomek\.m2\repository\args4j\args4j\2.0.16\args4j-2.0.16.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\lib\idea_rt.jar" org.openjdk.jmh.ForkedMain org.openjdk.jmh.samples.generated.oneshot.JMHSample_02_BenchmarkTypes.measureSingleShot -i 5 -r 1s -v true --hostName 169.254.35.151 --hostPort 57251
Error: Could not find or load main class Files
WARNING: Forked process returned code: 1
Forking using command: C:\java\jre7\bin\java.exe -Didea.launcher.port=7534 -Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\bin -Dfile.encoding=UTF-8 -cp "C:\java\jre7\lib\charsets.jar;C:\java\jre7\lib\deploy.jar;C:\java\jre7\lib\javaws.jar;C:\java\jre7\lib\jce.jar;C:\java\jre7\lib\jfr.jar;C:\java\jre7\lib\jfxrt.jar;C:\java\jre7\lib\jsse.jar;C:\java\jre7\lib\management-agent.jar;C:\java\jre7\lib\plugin.jar;C:\java\jre7\lib\resources.jar;C:\java\jre7\lib\rt.jar;C:\java\jre7\lib\ext\access-bridge-32.jar;C:\java\jre7\lib\ext\dnsns.jar;C:\java\jre7\lib\ext\jaccess.jar;C:\java\jre7\lib\ext\localedata.jar;C:\java\jre7\lib\ext\sunec.jar;C:\java\jre7\lib\ext\sunjce_provider.jar;C:\java\jre7\lib\ext\sunmscapi.jar;C:\java\jre7\lib\ext\sunpkcs11.jar;C:\java\jre7\lib\ext\zipfs.jar;C:\cygwin\home\Tomek\src\benchmarks\target\classes;C:\Users\Tomek\.m2\repository\org\openjdk\jmh\jmh-core\1.0-SNAPSHOT\jmh-core-1.0-SNAPSHOT.jar;C:\Users\Tomek\.m2\repository\args4j\args4j\2.0.16\args4j-2.0.16.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\lib\idea_rt.jar" org.openjdk.jmh.ForkedMain org.openjdk.jmh.samples.generated.sampletime.JMHSample_02_BenchmarkTypes.measureSamples -i 5 -r 1s -v true --hostName 169.254.35.151 --hostPort 57251
Error: Could not find or load main class Files
WARNING: Forked process returned code: 1
Forking using command: C:\java\jre7\bin\java.exe -Didea.launcher.port=7534 -Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\bin -Dfile.encoding=UTF-8 -cp "C:\java\jre7\lib\charsets.jar;C:\java\jre7\lib\deploy.jar;C:\java\jre7\lib\javaws.jar;C:\java\jre7\lib\jce.jar;C:\java\jre7\lib\jfr.jar;C:\java\jre7\lib\jfxrt.jar;C:\java\jre7\lib\jsse.jar;C:\java\jre7\lib\management-agent.jar;C:\java\jre7\lib\plugin.jar;C:\java\jre7\lib\resources.jar;C:\java\jre7\lib\rt.jar;C:\java\jre7\lib\ext\access-bridge-32.jar;C:\java\jre7\lib\ext\dnsns.jar;C:\java\jre7\lib\ext\jaccess.jar;C:\java\jre7\lib\ext\localedata.jar;C:\java\jre7\lib\ext\sunec.jar;C:\java\jre7\lib\ext\sunjce_provider.jar;C:\java\jre7\lib\ext\sunmscapi.jar;C:\java\jre7\lib\ext\sunpkcs11.jar;C:\java\jre7\lib\ext\zipfs.jar;C:\cygwin\home\Tomek\src\benchmarks\target\classes;C:\Users\Tomek\.m2\repository\org\openjdk\jmh\jmh-core\1.0-SNAPSHOT\jmh-core-1.0-SNAPSHOT.jar;C:\Users\Tomek\.m2\repository\args4j\args4j\2.0.16\args4j-2.0.16.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.0\lib\idea_rt.jar" org.openjdk.jmh.ForkedMain org.openjdk.jmh.samples.generated.throughput.JMHSample_02_BenchmarkTypes.measureThroughput -i 5 -r 1s -v true --hostName 169.254.35.151 --hostPort 57251
Error: Could not find or load main class Files
WARNING: Forked process returned code: 1
Process finished with exit code 0
More information about the jmh-dev
mailing list