jmh-gradle-plugin
jmh-gradle-plugin copied to clipboard
JmhBytecodeGenerator is incompatible with any module-info stuff
Describe the bug You're using JmhBytecodeGenerator, which seems to have been pretty much abandoned upstream and is completely incompatible with any module-info related artifacts.
To Reproduce Steps to reproduce the behavior:
- Specify a module-info in any jmh related artifact to be processed by gradle plugin
- Try and run
- See error
./gradlew jmh
> Configure project :
Version: 5.0.7
> Task :jmhRunBytecodeGenerator FAILED
Processing 6 classes from /home/cpw/projects/minecraft/eventbus/build/classes/java/jmh with "reflection" generator
Writing out Java source to /home/cpw/projects/minecraft/eventbus/build/jmh-generated-sources and resources to /home/cpw/projects/minecraft/eventbus/build/jmh-generated-resources
Exception in thread "main" java.lang.NoClassDefFoundError: module-info is not a class because access_flag ACC_MODULE is set
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:466)
at org.openjdk.jmh.generators.bytecode.JmhBytecodeGenerator.main(JmhBytecodeGenerator.java:90)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':jmhRunBytecodeGenerator'.
> Process 'command '/usr/lib/jvm/adoptopenjdk-16-hotspot-amd64/bin/java'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.4.2/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 743ms
4 actionable tasks: 1 executed, 3 up-to-date
I've tried the asm generator, but that has similar difficulties
./gradlew jmh
> Configure project :
Version: 5.0.7
> Task :jmhRunBytecodeGenerator FAILED
Processing 6 classes from /home/cpw/projects/minecraft/eventbus/build/classes/java/jmh with "asm" generator
Writing out Java source to /home/cpw/projects/minecraft/eventbus/build/jmh-generated-sources and resources to /home/cpw/projects/minecraft/eventbus/build/jmh-generated-resources
Exception in thread "main" java.lang.UnsupportedOperationException: Module requires ASM6
at org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:145)
at org.objectweb.asm.ClassReader.readModuleAttributes(ClassReader.java:781)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:580)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:424)
at org.openjdk.jmh.generators.asm.ASMGeneratorSource.processClass(ASMGeneratorSource.java:60)
at org.openjdk.jmh.generators.asm.ASMGeneratorSource.processClass(ASMGeneratorSource.java:53)
at org.openjdk.jmh.generators.asm.ASMGeneratorSource.processClasses(ASMGeneratorSource.java:47)
at org.openjdk.jmh.generators.bytecode.JmhBytecodeGenerator.main(JmhBytecodeGenerator.java:81)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':jmhRunBytecodeGenerator'.
> Process 'command '/usr/lib/jvm/adoptopenjdk-16-hotspot-amd64/bin/java'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.4.2/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 721ms
4 actionable tasks: 1 executed, 3 up-to-date
Looking upstream it seems this particular generator (bytecode) is not getting a lot of attention and hasn't for some time. The only focus is in the annotation processor, which you seem to have specifically abandoned.
I can't figure out any way to change to using the annotation processor with the gradle plugin sadly.