Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMH不在Eclipse中工作(作为Maven项目)-没有要运行的基准测试_Java_Eclipse_Maven_Microbenchmark_Jmh - Fatal编程技术网

Java JMH不在Eclipse中工作(作为Maven项目)-没有要运行的基准测试

Java JMH不在Eclipse中工作(作为Maven项目)-没有要运行的基准测试,java,eclipse,maven,microbenchmark,jmh,Java,Eclipse,Maven,Microbenchmark,Jmh,我想开始看看JMH,由于某些原因,我无法运行基准测试。让我解释一下我的尝试: 在Eclipse中设置maven项目 定义pom.xml如下: 下载了一些正式的JMH示例。作为示例,我选择了一个非常简单且很好的起点: 右键单击>运行方式>Java应用程序 但是,这会产生以下输出: Exception in thread "main" No benchmarks to run; check the include/exclude regexps. at org.openjdk.jmh.runne

我想开始看看JMH,由于某些原因,我无法运行基准测试。让我解释一下我的尝试:

  • 在Eclipse中设置maven项目
  • 定义pom.xml如下:

  • 下载了一些正式的JMH示例。作为示例,我选择了一个非常简单且很好的起点:

  • 右键单击>运行方式>Java应用程序
  • 但是,这会产生以下输出:

    Exception in thread "main" No benchmarks to run; check the include/exclude regexps.
    at org.openjdk.jmh.runner.Runner.run(Runner.java:155)
    at org.openjdk.jmh.samples.JMHSample_01_HelloWorld.main(JMHSample_01_HelloWorld.java:90)
    
    我在谷歌上搜索过,上面的例子似乎应该有效,但对我来说并非如此。 我也试图通过阅读来解决这个问题,但这似乎对我不起作用:

    • 我试图手动将生成的类移动到/META-INF/MicroBenchmarks,但这会产生以下错误:

      Exception in thread "main" java.lang.IllegalStateException: Mismatched format for the line: JMHSample_01_HelloWorld.class
      at org.openjdk.jmh.runner.BenchmarkRecord.<init>(BenchmarkRecord.java:92)
      at org.openjdk.jmh.runner.MicroBenchmarkList.find(MicroBenchmarkList.java:133)
      at org.openjdk.jmh.runner.Runner.run(Runner.java:150)
      at JMHSample_01_HelloWorld.main(JMHSample_01_HelloWorld.java:80)
      
      线程“main”java.lang.IllegalStateException中的异常:JMHSample_01_HelloWorld.class行的格式不匹配 位于org.openjdk.jmh.runner.BenchmarkRecord.(BenchmarkRecord.java:92) 位于org.openjdk.jmh.runner.MicroBenchmarkList.find(MicroBenchmarkList.java:133) 位于org.openjdk.jmh.runner.runner.run(runner.java:150) 位于JMHSample_01_HelloWorld.main(JMHSample_01_HelloWorld.java:80)
    似乎JMH应该在/META-INF/MicroBenchmarks中生成一些有效的行,这意味着在这个文件夹中不应该生成java类文件,对吗

    谁能帮我找出错误吗?谢谢。

    基准“源代码”除了像往常一样编译外,还需要由JMH注释处理器处理。在jmh0.5之前,注释处理器是主要JMH工件的一部分,因此对
    jmhcore
    的单一依赖就足够了。在JMH0.5中,注释处理功能被提取到单独的工件中,以促进对其他语言的支持

    为了使注释处理器回到“旧的”基于Java的JMH项目中,应该声明对处理器工件的附加依赖关系:

    
    org.openjdk.jmh
    ),如中所述

    mvn原型:生成\
    -DinteractiveMode=false\
    -DarchetypeGroupId=org.openjdk.jmh\
    -DarchetypeArtifactId=jmh java基准原型\
    -DgroupId=my.benchmark.group\
    -DartifactId=我的基准工件\
    -Dversion=1.0
    
    我在我的jmh+maven+eclipse项目的eclipse控制台中遇到了相同的错误,尽管我拥有所有必需的依赖项和插件

    尝试从终端而不是eclipse中的嵌入式maven进行
    mvn清洁安装
    ,出现以下错误

    ERROR: org.openjdk.jmh.runner.RunnerException: ERROR: Unable to acquire the JMH lock (/tmp/jmh.lock): already taken by another JMH instance, exiting. Use -Djmh.ignoreLock=true to forcefully continue.
        at org.openjdk.jmh.runner.Runner.run(Runner.java:202)
        at org.openjdk.jmh.Main.main(Main.java:71)
    

    如上所述,我在Java应用程序启动器中添加了
    -Djmh.ignoreLock=true
    作为虚拟机参数,它工作了

    我收到了相同的错误,因为我在之前运行了
    @Benchmark
    类之后更改了包含该类的包的名称。“清理并构建”足以让它重新工作。

    您错过了将JMH注释处理器应用于基准测试的步骤。最好从使用在jmh中给出的示例命令从原型生成一个新项目开始。dev提供了关于在post-0.5jmh中使用注释处理器的更多信息。非常感谢!缺少批注处理器!:-)。我所做的只是:1)使用Eclipse>文件>新建maven项目创建新的maven项目2)使用默认工作区位置3)搜索组id“org.openjdk.jmh”4)选择“jmhJava基准原型”5)输入组id和工件id(例如jmh测试)6)用鼠标右键单击project>Run As>maven clean 7)用鼠标右键单击project>Run As>maven install安装maven 8)从JMH网站导入示例9)转到JMHSample_01_HelloWorld并作为Java应用程序运行,希望这对其他人有所帮助。@OlegEstekhin能以“答案”的形式提供答案吗,那么皮特施尔能接受吗?否则,该问题在搜索列表中会觉得没有答案:)谢谢。@OlegEstekhin如果能更好地记录这一点就好了。有时候,你不想创建一个新的maven项目;然后要让这个黑魔法正常工作就很难了。