You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

切换至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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:05:31