JDK15环境下IDEA如何导入配置JMH?相关报错如何解决?
JDK15配置JMH运行报错解决方案
首先纠正认知误区:你提到的「JDK12之后JMH已经集成到JDK中」属于误传,JMH始终是OpenJDK维护的独立性能测试框架,并未内置到官方发布的Oracle JDK/OpenJDK发行版中,仍需手动引入依赖。
以下是通用排查解决步骤:
1. 检查依赖配置正确性
JMH 1.32及以上版本才完全兼容JDK15,需同时引入jmh-core和jmh-generator-annprocess两个依赖,且版本必须完全一致,不要设置scope为provided。
以Maven为例,正确的依赖配置如下:
<dependencies> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId> <version>1.37</version> </dependency> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-generator-annprocess</artifactId> <version>1.37</version> </dependency> </dependencies>
如果是Gradle项目,配置为:
dependencies { implementation 'org.openjdk.jmh:jmh-core:1.37' annotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37' }
2. 开启IDEA注解处理器
JMH需要通过注解处理器生成运行时的测试类,未开启会报类不存在错误,操作路径:
- 打开IDEA设置(快捷键
Ctrl+Alt+S/Cmd+,) - 进入
Build, Execution, Deployment→Compiler→Annotation Processors - 勾选
Enable annotation processing,保存后重新构建项目
3. 检查运行方式是否正确
不要直接运行标注@Benchmark的方法所在类的默认main方法,推荐两种运行方式:
方式一:手动编写启动类
在测试类中添加固定格式的main方法:
public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder() .include(你的测试类名.class.getSimpleName()) .forks(1) .build(); new Runner(opt).run(); }
直接运行该main方法即可。
方式二:使用构建工具命令运行
Maven执行命令:mvn clean install exec:java -Dexec.mainClass="org.openjdk.jmh.Main"
Gradle可引入JMH插件后执行gradle jmh命令。
内容的提问来源于stack exchange,提问作者Cyberlin
相关产品推荐
相关产品推荐

