如何将JMH基准测试结果输出到本地JSON文件?问题求助
JMH JSON结果文件未生成的排查与解决
核心问题原因
你用java -jar target/benchmarks.jar运行时,JMH默认使用自身的入口类(org.openjdk.jmh.Main),而非你代码中写了Options配置的自定义main方法,导致你的输出配置未生效。
解决方法
方法1:通过命令行参数指定输出(推荐)
直接在运行jar时添加结果文件和格式参数,无需依赖代码中的配置:
java -jar target/benchmarks.jar -rff V3Benchmark.json -rf json
参数说明:
-rff:指定结果文件路径-rf:指定结果格式(这里填json)
方法2:运行自定义的main方法
如果你想保留代码中的Options配置,需要直接运行包含Runner逻辑的主类,而非默认的benchmarks.jar入口:
java -cp target/benchmarks.jar com.your.package.YourBenchmarkMainClass
(替换com.your.package.YourBenchmarkMainClass为你写了Options和Runner代码的类的全限定名)
额外排查点
- 文件位置:结果文件默认生成在你执行java命令的当前工作目录,而非
target目录下,先检查当前目录是否有该文件。 - 权限问题:如果当前目录没有写入权限,JMH会无法生成文件,此时控制台会有相关报错信息。
内容的提问来源于stack exchange,提问作者Cindy
相关产品推荐
相关产品推荐

