野禅 2024-12-29 16:59 采纳率: 100%
浏览 1164
已结题

IDEA 下 lombok 不生效,找不到get

一、先说问题:
IDEA中Lombok不生效。如图:

img

二、所用版本:
1、64 位操作系统, 基于 x64 的处理器,Windows 11 家庭中文版。
2、JDK 21、apache-maven-3.9.6-bin。
3、IntelliJ IDEA 2024.3.1.1 (Ultimate Edition)

三、构建:
1、生成器选择 Spring Boot(不知道为什么时候变成了Spring Boot,以前是Spring Initializr)
2、类型选择 Maven
3、Java 选择 21
4、添加依赖 Lombok、Spring Web

img

img

四、文件结构:

img

五、文件内容:
只动了三个文件:修改application.properties 为 application.yml;新建PersonInfo、DispInfo。内容如下:

application.yml:

spring:
  application:
    name: d03

server:
  port: 8081
  servlet:
    session:
      timeout: 30
  tomcat:
    uri-encoding: UTF-8
name: LaoTou
age: 50
personinfo:
  name: Tudi
  age: 30

PersonInfo:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "personinfo")
public class PersonInfo {
    private String name;
    private int age;
}

DispInfo:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.stereotype.Component;
import org.springframework.test.context.junit4.SpringRunner;

@Component
@SpringBootTest
@RunWith(SpringRunner.class)
public class DispInfo {
    @Value("${name}")  // 获取配置文件中的 name
    private String name;
    @Value("${age}")  // 获取配置文件中的 age
    private int age;

    @Autowired  // 自动装配。在非测试类中,建议使用其他方法注入
    PersonInfo personInfo = new PersonInfo();

    @Test  // 该注解表示一个测试方法
    public void getNameAndAge() {
        System.out.println("姓名:"+name+"    年龄:"+age);
    }

    @Test
    public void getPersonInfo() {
        System.out.println("姓名:"+personInfo.getName()+"    年龄:"+personInfo.getAge());
    }
}

六、pom.xml 文件没动,自动生成的:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.afy</groupId>
    <artifactId>d03</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>d03</name>
    <description>d03</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>21</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

七、用过的方法:
1、Lombok 插件已安装;2、java compiler - use compiler 已选 javac;3、enable annotation processiing 已勾选;4、Invalidate Caches 动作做过;5、java compiler与project settings 里JAVA版本一致。

问题没有解决。

八、最后:第一次来此发贴,不知道行情,先20元

展开全部

  • 写回答

36条回答 默认 最新

  • 檀越@新空间 2024-12-29 17:00
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    根据你的描述,Lombok 在 IntelliJ IDEA 中没有生效。这通常有几个可能的原因和解决方法。下面是逐步排查问题并解决问题的步骤:

    1. 检查 Lombok 插件是否已安装

      • 打开 IntelliJ IDEA。
      • 进入 File -> Settings(或 Preferences)。
      • 选择 Plugins 选项卡。
      • 搜索 Lombok 插件,并确保它已经安装并且是启用状态。
    2. 启用注解处理器

      • 进入 File -> Settings(或 Preferences)。
      • 选择 Build, Execution, Deployment -> Compiler -> Annotation Processors
      • 勾选 Enable annotation processing
      • 点击 OK 保存设置。
    3. 配置 Maven 编译器插件

      • 确保在 pom.xml 文件中正确配置了 maven-compiler-pluginlombok 的依赖。你当前的配置看起来是正确的,但可以尝试以下修改:
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version> <!-- 添加版本号 -->
                    <configuration>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>1.18.24</version> <!-- 添加版本号 -->
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
        
    4. 重新导入项目

      • 在 IntelliJ IDEA 中,右键点击项目根目录,选择 Maven -> Reimport
      • 或者使用快捷键 Ctrl + Alt + Shift + S 打开 Project Structure,然后点击 OK 保存设置。
    5. 清理和重建项目

      • 打开终端(Terminal),运行以下命令:
        mvn clean install
        
      • 这将清理项目并重新构建,确保所有依赖都正确加载。
    6. 重启 IntelliJ IDEA

      • 有时简单的重启 IDE 可以解决一些临时性的问题。
    7. 检查代码中的 Lombok 注解

      • 确保 PersonInfo 类中的 @Data 注解和其他 Lombok 注解正确无误。
      • 例如:
        import lombok.Data;
        import org.springframework.boot.context.properties.ConfigurationProperties;
        import org.springframework.stereotype.Component;
        
        @Data
        @Component
        @ConfigurationProperties(prefix = "personinfo")
        public class PersonInfo {
            private String name;
            private int age;
        }
        
    8. 检查 Java 版本兼容性

      • 你使用的是 JDK 21,确保 Lombok 支持该版本。如果遇到兼容性问题,可以尝试降级到 JDK 17 或 18。

    通过以上步骤,你应该能够解决 Lombok 不生效的问题。如果问题仍然存在,请检查 IntelliJ IDEA 的日志文件(Help -> Show Log in Explorer),查看是否有相关错误信息。

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(35条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月1日
  • 已采纳回答 12月31日
  • 创建了问题 12月29日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部