使用Lombok 1.18.24与JDK17时import lombok.var编译失败求助
解决JDK17下Lombok var编译报错问题
错误原因
JDK10及以上版本将var列为Java关键字,不能用它作为类名导入,因此import lombok.var;语句本身违反Java语法规范,必然触发编译错误。
Lombok的lombok.var特性是为兼容JDK10之前的版本设计的;在JDK10+环境下,不管是使用Java原生var还是依赖Lombok处理,都无需显式导入该类——Lombok会自动识别并处理代码中的var用法。
解决步骤
删除
import lombok.var;语句
直接在代码中使用var即可,无需导入任何Lombok相关的var类。修改后的示例代码如下:package com.example.service; import com.example.dao.Employee; import com.example.repository.EmployeeRepository; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Optional; @RequiredArgsConstructor @Service public class EmployeeImageService { private static final Logger LOGGER = LoggerFactory.getLogger(EmployeeImageService.class); private final EmployeeRepository employeeRepository; public byte[] findEmployeeImageById(final Long id){ LOGGER.info("EmployeeImageService.findEmployeeImageById() - retrieving employee image"); var message = "Hello"; message = message + " World!"; var employee = employeeRepository.findById(id); return employee.map(Employee::getImage).orElse(null); } ... }(可选)清理冗余配置
若无需兼容JDK10以下版本,可以删除lombok.config中的lombok.var.flagUsage=ALLOW配置——JDK17原生支持var,这条配置在当前环境下没有实际作用。重新编译验证
执行./gradlew clean build或者在IntelliJ中执行Rebuild Project操作,编译错误即可消失。
内容的提问来源于stack exchange,提问作者Michael Rodgers
相关产品推荐
相关产品推荐

