Java &引用;没有匹配的基准”;在eclipse中从main运行JMH时
我想通过在eclipse中将JMH作为Java应用程序运行来尝试它的新特性。我导入并构建了jmh示例项目。编译后的类以/jmh samples/target/generated sources/annotations结尾,在/target/中有几个jar,从命令行运行microbenchmarks.jar可以正常工作 然而,当我执行main时,我总是得到Java &引用;没有匹配的基准”;在eclipse中从main运行JMH时,java,eclipse,benchmarking,jmh,Java,Eclipse,Benchmarking,Jmh,我想通过在eclipse中将JMH作为Java应用程序运行来尝试它的新特性。我导入并构建了jmh示例项目。编译后的类以/jmh samples/target/generated sources/annotations结尾,在/target/中有几个jar,从命令行运行microbenchmarks.jar可以正常工作 然而,当我执行main时,我总是得到 No matching benchmarks. Miss-spelled regexp? 有什么想法吗?我使用的是0.3版,这是一种更好的与
No matching benchmarks. Miss-spelled regexp?
有什么想法吗?我使用的是0.3版,这是一种更好的与开发人员沟通的方式
有几件事可以尝试:
Main
可能不是个好主意。改用JavaAPI-v extra
调试模式匹配:要么过滤器regexp不正确,要么没有要运行的基准target/classes/
好的,看来默认情况下jmh在META-INF/Microbenchmarks下查找生成的类,maven build将其放在项目的根目录下。然而,eclipse项目的根不在类路径上,所以在IDE中执行它会导致“找不到基准” 我按如下方式运行它:
另一方面,在Problems视图中会出现1000多个“错误”,因为eclipse会与自动生成的文件相混淆,但至少它是有效的。我也面临同样的问题,我遵循了教程。这就解决了问题 以下是我采取的步骤:
- 我使用AS-IS来理解它是如何工作的
- 然后我就做了mvn清理和安装
- 我看到所有的类都是在
target->annotations->->generated
- 然后,我运行了
类,结果成功了BenchmarkRunner main()
jmh样本/target/生成的源代码/注释和jmh样本/target/classes
作为源文件夹,它对我有效,没有任何错误。自动生成的文件没有问题;它们是正确的Java源代码(有数千条警告,但没有错误),实际上是在基准测试中运行的东西。target/classes
默认在类路径上,添加jmh示例/target/generated sources/annotation
不会给你任何东西,因为这不是org.openjdk.jmh.Main查找基准类的位置。检查org.openjdk.jmh.runner.MicroBenchmarkList.MICROBENCHMARK_LIST的值“不会给你任何东西”-除非没有它,我会得到由ClassNotFoundException
引起的“MICROBENCHMARK不匹配类”。同意,MICROBENCHMARK\u列表不需要它。你可能是对的。不知怎的,我在没有它的情况下运行它,但是有上面所有的问题。而且你的配置不起作用。现在,为了证明我的观点,我删除并删除了这个项目,重新导入并重新构建了它,然后它突然按照预期工作……欢迎提供指向解决方案的链接,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及它为什么存在,然后引用你链接到的页面最相关的部分,以防目标页面不可用。谢谢@Das_Geek。我更新了答案以添加更多内容。希望这能增加一点相关性。没问题!感谢您花时间改进您的答案。