You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 06:36:03