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

Quarkus 3.x升级后Gradle构建报错:找不到主类Web

Quarkus 3.x升级时基础子模块构建报错"Could not find or load main class Web"

问题详情

将Quarkus项目从2.16版本升级到3.x系列(3.0/3.1/3.2均尝试过),其中一个作为基础依赖模块(无需独立运行,仅供其他模块依赖)的子模块构建失败,报错:

Error: Could not find or load main class Web

该子模块的预期主类是标注了@QuarkusMain注解的ProductServerMain,但构建时触发quarkusGenerateCode任务报错,堆栈信息如下:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':security-suite-server-base:quarkusGenerateCode'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142)
        ...(省略重复堆栈内容)

已尝试的无效方案

  • 停止Gradle守护进程并删除.gradle文件夹
  • 在子模块build.gradle中显式配置主类为com.example.ProductServerMain

针对Quarkus 3.x变更的解决方案

Quarkus 3.x对Gradle插件的默认行为做了调整,尤其是对非独立运行的依赖模块,需要针对性修改配置:

1. 切换为基础Quarkus插件

如果该模块仅提供代码依赖,无需打包成可运行应用,将子模块的Gradle插件从完整的quarkus-gradle-plugin替换为quarkus-base-plugin,避免触发应用构建相关的主类检测逻辑:

plugins {
    id 'io.quarkus.platform.base' version '3.2.0.Final'
    // 替换原有的 id 'io.quarkus'
}

2. 显式禁用主类检测

若必须保留完整插件,通过配置告知Quarkus无需寻找主类:

  • 在子模块的application.properties中添加:
    quarkus.application.main-class=
    
  • 或者在build.gradle中配置:
    quarkus {
        application {
            mainClass = ''
        }
    }
    

3. 清理无效配置

检查子模块中是否存在遗留配置(如旧的META-INF/quarkus-application.properties),其中可能错误指定了Web作为主类,Quarkus 3.x对配置优先级的处理有变化,需清理这类无效配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:43:09