执行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
相关产品推荐
相关产品推荐

