执行mvn site命令触发clirr插件报错:Invalid byte tag in constant pool:19
解决
mvn site执行时的Invalid byte tag in constant pool: 19错误 问题背景
执行mvn site命令时触发如下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.12.1:site (default-site) on project xxx: Error generating clirr-maven-plugin:2.8:clirr report: Invalid byte tag in constant pool: 19
环境信息:
- Apache Maven 3.9.6
- Java 1.8.0_402
- Mac OS X 14.3.1
原因分析
clirr-maven-plugin 2.8默认依赖的BCEL(Byte Code Engineering Library)版本过低,无法识别Java 7及以上版本字节码中的CONSTANT_MethodHandle常量池标签(对应tag值19)。即使你使用的是Java 8,老旧的BCEL版本也无法正确解析这类字节码,最终导致maven-site-plugin生成报告时失败。
解决方案
方案1:升级clirr-maven-plugin版本
直接将clirr插件升级到支持Java 8的版本(如3.2),新版本会自动依赖兼容的BCEL库。在pom.xml中添加或修改配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.12.1</version> <reportPlugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>clirr-maven-plugin</artifactId> <version>3.2</version> </plugin> </reportPlugins> </plugin> </plugins> </build>
方案2:强制指定兼容的BCEL版本
如果暂时不想升级clirr插件,可以在pom.xml的dependencyManagement中强制引入支持Java 8的BCEL版本(如6.5.0):
<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.bcel</groupId> <artifactId>bcel</artifactId> <version>6.5.0</version> </dependency> </dependencies> </dependencyManagement>
验证
修改配置后重新执行mvn site,错误即可消除,站点报告能正常生成。
内容的提问来源于stack exchange,提问作者Prakher Jindal
相关产品推荐
相关产品推荐

