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

多模块Quarkus项目Dev模式启动失败:DevModeContext.getApplicationRoot()为空

Quarkus多模块项目Dev模式启动NullPointerException问题解决

问题描述

项目升级至Quarkus 2.14.1 Final版本(曾使用2.13.3 Final、2.13.4.Final),切换为多模块结构后可正常构建,但执行quarkus dev启动Dev模式时触发以下报错:

[INFO] --- quarkus-maven-plugin:2.14.1.Final:dev (default-cli) @ my-project ---
Listening for transport dt_socket at address: 5005
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "io.quarkus.deployment.dev.DevModeContext$ModuleInfo.getMain()" because the return value of "io.quarkus.deployment.dev.DevModeContext.getApplicationRoot()" is null
at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:90)
at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:62)

复现步骤

  • 执行命令生成基础项目:quarkus create app --maven --java=19.0.1 --wrapper --package-name=com.myproject
  • 添加新子模块(如infrastructure-web)
  • 将生成的com.myproject.GreetingResource源码迁移至新模块的src/main/java目录下
  • 执行mvn clean install && quarkus dev,触发报错

问题原因

Quarkus Dev模式默认会在当前执行命令的模块中查找应用入口、部署资源等核心内容。当所有业务代码移至子模块后,根模块不再包含Quarkus应用的必要组件,导致Dev模式无法定位到应用根目录,进而抛出NullPointerException。

解决方案

方案1:指定Dev模式运行的子模块

执行quarkus dev时,通过参数指定包含Quarkus应用代码的子模块:

mvn clean install && quarkus dev -Dquarkus.dev.module=infrastructure-web

或者直接进入子模块目录执行命令:

cd infrastructure-web
quarkus dev

方案2:通过Maven命令指定子模块运行

若根模块为聚合模块,可通过Maven的-pl(指定模块)和-am(同时构建依赖模块)参数启动Dev模式:

mvn quarkus:dev -pl infrastructure-web -am

内容的提问来源于stack exchange,提问作者Eduardo Yáñez Parareda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:15:33