我无法在eclipse中运行简单的JMH基准测试。
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.12</version>
</dependency>
Java代码:
public class BTest {
@Benchmark
public void test() {
// todo
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(BTest.class.getSimpleName())
.build();
new Runner(opt).run();
}
}
运行结果:
线程“main”中出现异常java.lang。错误:找不到资源:/META-INF/基准测试列表,网址为org.openjdk.jmh.runner;抽象资源阅读器.getReaders(抽象资源阅读器. java:96),网址为org.openjdk.jmh.runner;基准测试列表.find(基准测试列表. java:104),网址为org.openjdk.jmh.runner.Runner.internalRun(运行者. java:256),网址为org.openjdk.jmh.runner.Runner.run(运行者. java:206),网址为com.test.BTest.main(btest. java:24)
可能问题是,我在日 eclipse 上运行。
7条答案
按热度按时间gupuwyp21#
终于找到了,有个
exec-maven-plugin
插件缺失的问题ef1yzkbh2#
如果有人正在使用Gradle,请将jmh-gradle-plugin添加到您的插件块:
然后在依赖项块中添加以下所有内容(检查JMH on Maven here的最新版本):
然后,只需使用以下方法通过Gradle运行基准测试:
在IDE中运行
如果您还想从IDE内部而不是通过Gradle运行基准测试,可以执行以下任一操作:
选项1 -
main
方法只需使用main方法,而不进行其他配置,您的IDE将遵循您的注解配置:
选项2 -安装JMH插件
如果你使用IntelliJ,从
Preferences > Plugins
部分安装JMH Java Microharness Benchmark Plugin,然后你可以完全省略你的main
方法,IntelliJ会在你的类名旁边给予你一个运行按钮:qq24tv8q3#
pom.xml必须具有以下对Java微基准测试工具(JMH)框架的依赖关系和配置
之后,转到命令行并运行命令$mvn clean install
puruo6ea4#
当您的编译器插件没有处理JMH相关的注解时,可能会发生这种情况。对我来说,带有
maven-compiler-plugin
的<annotationProcessorPaths>
更新的Gill's answer工作正常。niknxzdl5#
我意识到我的父pom中已经有了
exec-maven-plugin
,如预期答案中所述,但我必须运行mvn clean install
(如https://stackoverflow.com/a/40748670中所述)来修复错误jgwigjjp6#
犯了同样的错误;从maven或intellij运行测试也不起作用。我意识到问题是我用Kotlin编写了基准测试。将代码改为java解决了这个问题。
vvppvyoh7#
也添加版本。这对我很有效