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

Maven compile正常但install失败:fatArchiveSrc空指针及JaCoCo兼容问题

Maven构建异常排查与解决

项目背景

多模块Maven项目结构:

  • 主pom:packaging为pom,指定Java 17
  • my-service-war:packaging为war,指定Java 19,配置了liberty-maven-plugin的<installAppPackages>spring-boot-project</installAppPackages>
  • my-service-ear:packaging为ear

执行mvn compile正常,但mvn install失败,出现两类错误,且target目录未生成预期的WAR、EAR文件。


错误1:OpenLiberty liberty-maven-plugin:3.7.1空指针异常

错误详情

执行deploy目标时抛出:Cannot invoke "java.io.File.getCanonicalPath()" because "fatArchiveSrc" is null,堆栈指向DeployMojo的installSpringBootApp方法,该参数依赖Spring Boot fat jar。

解决步骤

  • 修正liberty插件配置:<installAppPackages>spring-boot-project</installAppPackages>用于自动部署Spring Boot fat jar,但当前模块是war打包(非fat jar)。可改为<installAppPackages>all</installAppPackages>直接部署war包,或移除该配置。
  • 升级插件版本:3.7.1对Java 19兼容性不足,升级至3.10.x及以上稳定版,修复空指针及版本兼容问题。
  • 检查部署文件路径:确认插件配置中是否正确指定了要部署的应用文件,避免因路径缺失导致插件找不到目标文件。

错误2:JaCoCo jacoco-maven-plugin:0.8.7类文件版本不兼容

错误详情

无法分析Java 19生成的类文件(主版本63),提示Unsupported class file major version 63。

解决步骤

  • 升级JaCoCo版本:0.8.7不支持Java 19,需升级至至少0.8.8(支持Java 19),推荐使用0.8.12+最新稳定版。
  • 统一Java版本或适配配置:主pom指定Java 17,war模块为Java 19,跨版本易导致类文件不兼容。可将war模块Java版本降至17与主pom统一,或确保JaCoCo在war模块中单独配置,<source>和<target>参数设为19,匹配模块Java版本。
  • 检查JaCoCo执行逻辑:确保插件只在对应模块执行分析,避免跨版本模块的类文件被错误扫描。

WAR/EAR文件未生成问题

  • 检查war模块打包配置:确认<packaging>war</packaging>已正确设置,且未禁用maven-war-plugin的默认执行。
  • 检查ear模块依赖配置:确认my-service-ear模块已正确引入my-service-war作为依赖,且maven-ear-plugin配置中指定了要包含的war模块。
  • 先修复前置错误:前面的空指针、JaCoCo错误会中断构建流程,导致打包目标未执行,需先解决上述两类错误后重新执行mvn install。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:34:59