Java开发环境配置需依次验证JAVA_HOME、PATH、IDE SDK、Maven编译插件及运行时JRE版本一致性,常见错误是多处版本未对齐导致“Unsupported class file major version”等报错。

Java开发环境配置不是“装完JDK就完事”,关键在于验证路径是否生效、IDE能否识别正确版本、以及后续项目是否能正常编译运行。很多问题其实出在JAVA_HOME没设对,或者PATH里混进了旧版本的bin目录。
确认系统已安装JDK并正确设置JAVA_HOME
很多人用java -version看到有输出就以为OK,但IDE(如IntelliJ或Eclipse)依赖的是JAVA_HOME环境变量,不是PATH里的可执行文件路径。
-
JAVA_HOME必须指向JDK根目录(例如:C:\Program Files\Java\jdk-17.0.1或/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home),不能带bin - Windows下用
set JAVA_HOME检查;macOS/Linux用echo $JAVA_HOME;若为空,需手动添加到系统环境变量或shell配置文件(如~/.zshrc) - 确保
PATH中包含%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux),且它排在其他Java路径之前——否则java命令可能调用到JRE或旧版JDK
在IntelliJ IDEA中指定Project SDK和Language Level
即使系统JDK装好了,IntelliJ默认不会自动使用你刚配的JDK,新项目仍可能沿用内置的bundled JDK或报Cannot resolve symbol 'String'。
- 新建项目时,在
New Project向导里手动点击Project SDK→Add JDK...,选择你本地的JDK路径(不要选JRE) - 创建后进入
File → Project Structure → Project,确认Project SDK和Project language level匹配(例如JDK 17对应17 - Sealed types, pattern matching for switch) - 如果已有项目报红,右键模块→
Open Module Settings→Modules→Sources页签,检查Language level是否低于SDK支持范围
验证Maven能否读取JDK配置
Maven本身不依赖JAVA_HOME,但它启动的编译器(maven-compiler-plugin)会受source/target参数和当前运行JVM版本双重影响。常见现象是mvn compile成功但IDE报错,或反之。
Android文档-开发者指南-第一部分:入门-中英文对照版 Android提供了丰富的应用程序框架,它允许您在Java语言环境中构建移动设备的创新应用程序和游戏。在左侧导航中列出的文档提供了有关如何使用Android的各种API来构建应用程序的详细信息。第一部分:Introduction(入门) 0、Introduction to Android(引进到Android) 1、Application Fundamentals(应用程序基础) 2、Device Compatibility(设备兼容性) 3、
立即学习“Java免费学习笔记(深入)”;
- 运行
mvn -v,看输出中的Java version是否与java -version一致;如果不一致,说明Maven用了另一个JVM(比如Mac上通过Homebrew装的OpenJDK) - 在
pom.xml中显式声明编译插件版本和目标字节码:
org.apache.maven.plugins maven-compiler-plugin 3.11.0 17 17
- 避免只靠
MAVEN_OPTS="-Dmaven.compiler.source=17"这种临时设置,它不保证IDE同步识别
常见错误:Unsupported class file major version
这是最典型的版本错配信号,意思是“当前运行的JVM太老,无法加载由更高版本JDK编译出来的class文件”。比如用JDK 11运行一个用JDK 21编译的jar。
- 查错第一步:运行
java -version和javac -version,确认二者一致且符合项目要求 - 如果是IDE运行时报这个错,检查
Run Configuration → JRE是否被手动指定为旧版本 - 如果是Spring Boot项目,还要核对
spring-boot-starter-parent的版本是否支持你用的JDK(例如3.2.x要求JDK 17+,3.3.x要求JDK 21+) - 注意:
java --version显示17.0.1不代表javac也是同一版本——某些Linux发行版会把JRE和JDK分开安装
真正卡住人的从来不是下载JDK那一步,而是多个地方(系统变量、IDE设置、Maven配置、运行时JRE)之间版本没对齐。建议每次换JDK后,按顺序跑一遍:java -version → javac -version → mvn -v → 新建空项目编译 → 运行一个main方法。只要其中一环断了,就得回头查对应位置的配置。









