在 cmd
里手动切换:
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_192
set PATH=%JAVA_HOME%\bin;%PATH%
在Idea的终端查看:
java -version
Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tre
-
JDK 版本不匹配
- 你可能使用了 JDK 8,但
javac
仍然是 JDK 21 的版本,导致com.sun.tools.javac.tree.JCTree$JCImport
结构不匹配。 - 你可能的
JAVA_HOME
指向了 JDK 8,但PATH
里的javac
还是 JDK 21。
- 你可能使用了 JDK 8,但
-
Maven 或 Gradle 编译环境混乱
- 你的 Maven/Gradle 可能使用的是 JDK 21 的工具链,而你的项目要求 JDK 8。
mvn compile
可能调用了 JDK 21,而不是 JDK 8。
-
Lombok 版本不兼容
- 如果你的项目用了 Lombok,但 JDK 版本与 Lombok 不匹配,也可能报这个错误。
Lombok 是什么?
Lombok 是一个 Java 库,用于 简化 Java 代码,通过 自动生成 Getter、Setter、构造函数等,减少样板代码(boilerplate code)。
在 Java 里,很多类需要写大量的 getter/setter 方法、toString()
、equals()
、hashCode()
,这很繁琐。Lombok 通过注解 自动帮你生成这些方法,让代码更简洁。
Lombok 主要功能
Lombok 通过 注解 自动生成代码,常用的注解有:
1. @Getter
和 @Setter
自动生成 getter 和 setter 方法:
import lombok.Getter;
import lombok.Setter;public class User {@Getter @Setterprivate String name;@Getter @Setterprivate int age;
}
相当于:
public class User {private String name;private int age;public String getName() { return name; }public void setName(String name) { this.name = name; }public int getAge() { return age; }public void setAge(int age) { this.age = age; }
}
Lombok 让代码更简洁,不需要手写 getXXX()
和 setXXX()
。