切换至Java 8后Maven Site插件执行报错求助
解决Maven Site插件在Java 8下的"Invalid byte tag in constant pool: 18"错误
你遇到的这个问题确实和Java 8的字节码特性与旧版BCEL库的兼容性有关——Java 8引入了新的常量池标签(比如标签18对应INVOKEDYNAMIC相关的常量),而你当前使用的maven-site-plugin 3.6/3.7依赖的BCEL版本无法识别这些新标签,所以抛出了这个错误。
这里有两个可靠的解决方案:
方案1:升级Maven Site插件到兼容Java 8的版本
最彻底的解决方式是把maven-site-plugin升级到3.8.1及以上版本,这个版本已经官方修复了Java 8的兼容性问题。修改你的父pom配置如下:
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <!-- 升级到3.8.1或更高稳定版本 --> <version>3.8.1</version> <configuration> <locales>en</locales> </configuration> <dependencies> <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-webdav-jackrabbit</artifactId> <version>${wagon.webdav.version}</version> </dependency> </dependencies>
方案2:手动替换兼容Java 8的BCEL依赖
如果因为项目限制无法升级插件,可以在maven-site-plugin的依赖中手动添加最新版的BCEL库,覆盖插件自带的旧版本(比如6.5.0版本完全支持Java 8字节码):
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.6</version> <configuration> <locales>en</locales> </configuration> <dependencies> <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-webdav-jackrabbit</artifactId> <version>${wagon.webdav.version}</version> </dependency> <!-- 引入兼容Java8的BCEL依赖,覆盖插件自带的旧版本 --> <dependency> <groupId>org.apache.bcel</groupId> <artifactId>bcel</artifactId> <version>6.5.0</version> </dependency> </dependencies>
修改完成后,重新执行你的命令:
mvn site:site site-deploy -e -U
应该就能正常完成站点构建和部署了。
内容的提问来源于stack exchange,提问作者papanito
相关产品推荐
相关产品推荐

