@Slf4j 注解 log使用报错

231 阅读1分钟
@Controller  
@Slf4j  
public class HomeController {  
  
    @Autowired  
    private HomeService homeService;  
  
    @PostMapping("/textgen")  
    public ResponseResult<ModelResponseDTO> textGen(@RequestBody ModelTextRequest request) {  
        log.info("Recevice request : " + request);  
        return homeService.processTextGen(request);  
    }  
}

报错 java: 找不到符号 符号: 变量 log 位置: 类 com.ren.controller.HomeController

离谱,去看了一眼 Lombok 也导入成功了,也怀疑了版本问题,更换了最新最常用的版本(1.18.30),还是不行。
找了一些教程,主要有以下方法:

  1. Lombook插件没安装。自查了一下,安装了,pass。
  2. Springboot 依赖冲突。springboot-start中已有日志实现,但是又导入了logback-classic。自查,没有这个情况,pass。
  3. 非springboot项目。这不可能,绝对是他妈来捣乱的,pass。
  4. 设置里面没开enable annotation processing ,编译器没使用javac。自查,都没问题,pass。
  5. build.gradle中没有指定lombok为注解处理包。自查,指定了,pass。

真是拿他没招了。
思考一下,他这个log没报错,并且输入log的时候有提示,就说明导入肯定是成功的,但是在编译的时候出了问题。

image.png

尝试去看看是不是jvm编译的问题,添加-Djps.track.ap.dependencies=false参数,这个参数可以禁止 JPS 跟踪注解处理器依赖,缓解注解带来的相关问题。可惜,还是没用。
思考之余突然灵光一现,新建项目的时候我是想创建Springboot 2.x 的,但是当时提供的选项都是 3.x 。也是抱着尝尝鲜的心态,使用了 Springboot 3.x ,立刻去看了一下Springboot 版本,3.4.10。那就有可能是框架太新了导致的一些问题,搜索了一下 Springboot 新版对 Lombok 的支持,逐渐有了眉头,将 Lombok 版本升级到了1.18.40,完美解决。