必须先在Installed JREs中注册OpenJDK,再于项目Build Path中引用;路径须指向jdk根目录(如/opt/homebrew/.../Home或C:\Program Files\Java\jdk-21),不可选jre子目录,否则Eclipse找不到bin/javac和lib/modules。

必须先在 Installed JREs 里注册 OpenJDK,再在项目 Build Path 中引用它;直接拖 jar 或设环境变量没用。
OpenJDK 在 Preferences → Installed JREs 中添加失败
常见错误是路径选错:必须指向 jdk-xx.x.x 根目录(如 /opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home 或 C:\Program Files\Java\jdk-21),不能选到 jre/ 子目录下,否则 Eclipse 找不到 bin/javac 和模块化运行时(lib/modules)。
macOS 上 Homebrew 安装的 OpenJDK,ARM 芯片路径通常是:/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home;Intel 芯片则是:/usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home。
- 点击 Add → Standard VM → Next → Directory… 后弹出空白?说明路径不含
bin/javac - 添加后没勾选?列表里带对勾的才是当前默认生效的 JDK
- Eclipse 不读取系统
JAVA_HOME,哪怕终端里java -version正常,Eclipse 也完全无视
项目 Build Path 里 JRE System Library 显示 Unknown 或红色叹号
这表示项目虽然已注册了 OpenJDK,但没真正绑定——JRE System Library 条目只是个“占位符”,背后没连上任何实际 JRE 实例。
立即学习“Java免费学习笔记(深入)”;
解决方式不是重装 JDK,而是进项目 Properties → Java Build Path → Libraries:
- 展开
JRE System Library,点右侧Remove - 点
Add Library… → JRE System Library → Next - 务必选
Alternate JRE,再从下拉菜单中选你刚在 Installed JREs 里注册好的那个 OpenJDK(比如jdk-21.0.2) - 点
Finish,然后Apply and Close,最后按F5刷新项目
如果下拉菜单为空,说明前一步没勾选 Installed JREs 里的条目;如果仍显示 Unknown,检查 .classpath 文件里是否有类似 entry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/Unknown JRE" —— 这是残留旧配置,删掉整行再重新 Add 即可。
Source 和 Output Folder 配置影响 OpenJDK 特性识别
即使 JDK 版本正确,var、record、switch 表达式仍报错,大概率是 Source 选项卡里输出路径或编译级别没对齐。
进 Properties → Java Build Path → Source 确认:
-
Output folder必须是有效路径(如bin或target/classes),不能是只读或不存在的目录 - 右下角
Enable project specific settings勾选后,要同步进Properties → Java Compiler设置合规级别(如 OpenJDK 21 对应21,不是1.8) - 若用了 Maven,
src/main/java必须被标记为 source folder,否则包结构解析错,import提示会乱
改完别忘了刷新,否则 Problems 视图里可能还缓存着旧错误。
最易被忽略的是:OpenJDK 17+ 默认禁用 --add-opens 类反射访问,某些老库(如早期 ASM 或 Spring 3.x)会在运行时报 IllegalAccessError —— 这不属于 Build Path 配置范畴,但常被误认为是 JDK 没设对。真遇到这类问题,得去 Run Configuration 的 VM arguments 里手动加参数,而不是调 Build Path。


















