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

使用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用法。

解决步骤

  1. 删除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);
        }
    ...
    }
    
  2. (可选)清理冗余配置
    若无需兼容JDK10以下版本,可以删除lombok.config中的lombok.var.flagUsage=ALLOW配置——JDK17原生支持var,这条配置在当前环境下没有实际作用。

  3. 重新编译验证
    执行./gradlew clean build或者在IntelliJ中执行Rebuild Project操作,编译错误即可消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:01:33