如何消除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
相关产品推荐
相关产品推荐

