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

执行mvn site生成报告时出现ClassFormatException异常求助

解决Maven Site命令中JarAnalyzer处理module-info.class的警告

老哥,这个问题我之前踩过坑!本质是JarAnalyzer依赖的BCEL库版本太旧,不支持Java 9及以上版本引入的module-info.class文件格式。错误里的Invalid byte tag in constant pool: 19就是实锤——标签19是Java 9新增的CONSTANT_Module_info常量类型,旧版BCEL根本认不出它。

给你三个解决方案,按靠谱程度排序:

1. 优先升级maven-site-plugin到最新稳定版

新版的maven-site-plugin已经把依赖的BCEL更新到支持Java 9+的版本了,直接升级就能解决问题。在你的项目pom.xml里添加或更新插件配置(如果已有site-plugin就替换版本号):

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-site-plugin</artifactId>
      <version>3.12.1</version> <!-- 可以根据Maven仓库的最新稳定版调整 -->
    </plugin>
  </plugins>
</build>

改完重新执行mvn site,这个警告应该就会消失。

2. 手动替换JarAnalyzer的BCEL依赖

如果因为项目限制没法升级site-plugin,可以在插件配置里排除旧BCEL,换成支持新类格式的版本:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-site-plugin</artifactId>
      <version>你当前使用的版本号</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.bcel</groupId>
          <artifactId>bcel</artifactId>
          <version>6.6.0</version> <!-- 该版本支持Java 17及以下的类文件格式 -->
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

3. 临时跳过JarAnalyzer检查(不推荐)

要是急着执行命令不想修改配置,也可以通过参数跳过JarAnalyzer的分析:

mvn site -Dmaven.site.skipJarAnalyzer=true

不过这只是治标不治本,相当于把警告隐藏起来了,如果你需要生成完整的站点文档,还是前两种方法更靠谱。

额外说明

你使用的log4j-api从2.10.0版本开始就包含了Java 9的module-info.class,这也是旧工具处理失败的核心原因——升级依赖才是彻底解决问题的正道。

内容的提问来源于stack exchange,提问作者excelsiorious

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:58:32