Forking with mvn exec:java

Guillaume Drouet guidrouet at gmail.com
Sun Jul 27 13:06:20 UTC 2014


Hi,

I'm using JMH to compare runtime annotation processors libraries. Since
those tools often scan multiple JARs file (webapp use cases), using the
maven-shade-plugin to pack all dependencies into one jar was problematic.

So I decided to run JMH with exec-maven-plugin that runs java command line
with all jars already added to the classpath.

The problem is that when JMH forks (default behavior), the dependencies are
removed from classpath:

# Run progress: 0,00% complete, ETA 00:03:20
# Fork: 1 of 10
<forked VM failed with exit code 1>
<stdout last='10 lines'>
</stdout>
<stderr last='10 lines'>
java.lang.NoClassDefFoundError: org/openjdk/jmh/runner/ForkedMain
Caused by: java.lang.ClassNotFoundException:
org.openjdk.jmh.runner.ForkedMain
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.openjdk.jmh.runner.ForkedMain.  Program
will exit.
Exception in thread "main"
</stderr>

 Of course, I don't reproduce the issue if I disable forks. However, I
don't understand why JMH doesn't keep the classpath set when it performs
fork.

Any idea please?

Thanks!

-- 
Guillaume DROUET


More information about the jmh-dev mailing list