Spring Boot项目中Kotlin no-args插件搭配Maven不生效如何解决?
问题原因及解决方案
你遇到的报错与IDEA配置有关,同时存在一处注解配置错误,可按以下步骤排查解决:
1. 修正自定义@NoArg注解的保留策略
你当前使用的AnnotationRetention.SOURCE保留级别会让注解仅存在于源码阶段,编译期no-arg插件无法识别到该注解,自然不会为对应类生成无参构造。需将保留级别调整为编译期可识别的BINARY或RUNTIME,修改后的注解代码如下:
@Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) annotation class NoArg
2. 同步IDEA Kotlin编译器配置
no-arg插件生成的无参构造是字节码层面的,默认情况下IDEA的Kotlin语法校验模块不知道这个构造的存在,就会抛出参数缺失的报错,可按以下路径配置:
- 打开IDEA设置 →
Build, Execution, Deployment→Compiler→Kotlin Compiler - 在
Compiler plugins区域找到no-arg插件配置项,将你自定义的com.abc.xyz.NoArg全类名添加到注解列表中 - 配置完成后刷新Maven项目,重启IDEA的Kotlin语法校验即可
3. 额外注意事项
no-arg插件生成的无参构造本身仅用于反射场景(比如JPA实例化、JSON反序列化等),并不支持在Kotlin代码中显式调用。如果你确实需要在Kotlin代码里直接调用无参构造,直接给主构造参数添加默认值即可,不需要额外使用no-arg插件:
class DemoClass( val type: String = "", val title: String = "", )
内容的提问来源于stack exchange,提问作者Andrei
相关产品推荐
相关产品推荐

