JMH不';t在Java模块内运行(找不到资源:/META-INF/BenchmarkList)
我接受了一个使用JMH不';t在Java模块内运行(找不到资源:/META-INF/BenchmarkList),java,maven,java-module,jmh,Java,Maven,Java Module,Jmh,我接受了一个使用maven-surefire-plugin(自动测试)来触发JMH基准测试的项目,并在其中添加了module-info.java。现在,META-INF/BenchmarkList不再生成(事实上,整个目录都丢失了),因此在启动基准测试时,我出现了以下错误: 错误:找不到资源:/META-INF/BenchmarkList 我怀疑Java模块正在阻止注释处理器正常运行,但我不知道如何修复它。有什么想法吗?我通过反复试验找到了答案。它看起来像maven编译器插件3.8.0中的一个b
maven-surefire-plugin
(自动测试)来触发JMH基准测试的项目,并在其中添加了module-info.java
。现在,META-INF/BenchmarkList
不再生成(事实上,整个目录都丢失了),因此在启动基准测试时,我出现了以下错误:
错误:找不到资源:/META-INF/BenchmarkList
我怀疑Java模块正在阻止注释处理器正常运行,但我不知道如何修复它。有什么想法吗?我通过反复试验找到了答案。它看起来像maven编译器插件3.8.0中的一个bug(或“功能”)。当出现
module info.java
时,JMH注释处理器不再自动拾取。添加此配置修复了我的问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
[...]
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
</annotationProcessorPaths>
[...]
</configuration>
</plugin>
org.apache.maven.plugins
针对maven编译器插件。我通过反复试验找到了答案。它看起来像maven编译器插件3.8.0中的一个bug(或“功能”)。当出现module info.java
时,JMH注释处理器不再自动拾取。添加此配置修复了我的问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
[...]
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
</annotationProcessorPaths>
[...]
</configuration>
</plugin>
org.apache.maven.plugins
针对maven编译器插件。一般来说,在没有问题的情况下,很难找出错误或其原因。因为问题以maven surefire开始,答案以maven compiler结束。一般来说,当问题没有答案时,很难找出错误或其原因。只是分享一下,因为问题以maven surefire开始,答案以maven compiler结束。在mvn clean安装后也为我工作。jmh.version的值是多少?@LizLamperouge您想要使用的jmh的任何版本。在mvn clean安装后也为我工作。jmh.version的值是多少?@LizLamperouge要使用的JMH版本。