I wanted to try out the new feature of JMH by running it as Java Application in eclipse. I imported and built jmh-samples project. Compiled classes ended in /jmh-samples/target/generated-sources/annotations, there are several JARs in /target/ and running microbenchmarks.jar from command line works as usual.
However when I execute main I always get
No matching benchmarks. Miss-spelled regexp?
Any ideas? I am using version 0.3
jmh-dev@ is a better way to communicate this with the developers.
Few things to try:
- Hijacking
Main
is probably not a good idea. Use Java API instead, like this sample.
- Use
-v extra
to debug the pattern matching: either the filter regexp is incorrect, or there are no benchmarks to run.
- If the regexp is incorrect, fix it.
- If there are no benchmarks to match against, then there is a chance resources are not generated and/or picked up properly. Make sure
target/classes/
is also available on classpath.
Okay, so looks like by default jmh looks for generated classes under META-INF/Microbenchmarks, which maven build puts under root of the project. However root of the eclipse project is not on the classpath, so executing it in IDE results in "no benchmarks found".
I got it running following way:
- mvn clean package (using external maven installation, not embded
in eclipse)
- Right-click on jmh-samples project, select "Build
Path -> Use as a source folder"
- You can now run any of the benchmarks from jmh-samples as Java Application in eclipse
On the downside you get like 1000+ "errors" in Problems view, since eclipse gets confused with auto-generated files, but oh well, at least it works.
I was also facing the same problem, and I followed the tutorial here. That solved the issue.
Below are the steps I took: