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

如何消除Kotlin中Quarkus自定义main方法的私有成员警告

解决Quarkus Kotlin中unrecommended usage of private members警告

问题原因

你用Kotlin object声明的Main类加上@QuarkusMain注解后,Quarkus的Arc容器会将其视为CDI Bean。而Kotlin的object默认会生成私有无参构造器,Arc容器不推荐Bean使用私有构造器(建议使用包可见的构造器),因此触发该警告。

解决思路与方案

方案1:将object改为class+伴生对象

把单例object换成普通class,用伴生对象存放main方法。Kotlin中普通class的默认构造器是**包可见(package-private)**的,符合Arc的要求,警告会自动消除。

代码示例:

import io.quarkus.runtime.Quarkus
import io.quarkus.runtime.annotations.QuarkusMain

@QuarkusMain
class Main {
    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            println("Running main method")
            Quarkus.run(*args)
        }
    }
}

方案2:实现QuarkusApplication接口

直接让object实现QuarkusApplication接口,这种写法是Quarkus官方推荐的自定义入口方式之一,Arc容器会直接调用run方法,不会触发构造器相关的警告。

代码示例:

import io.quarkus.runtime.QuarkusApplication
import io.quarkus.runtime.annotations.QuarkusMain

@QuarkusMain
object Main : QuarkusApplication {
    override fun run(args: Array<String>): Int {
        println("Running main method")
        // 返回0表示正常退出,可添加自定义初始化逻辑
        return 0
    }
}

方案3:禁用特定警告(不推荐)

如果不想修改代码结构,可以在application.properties中添加配置,让Arc忽略私有构造器的警告:

quarkus.arc.warning-private-members=false

⚠️ 注意:这种方式只是隐藏警告,并未从根源解决问题,不推荐长期使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:30:25