必须安装JDK而非JRE,正确配置JAVA_HOME指向JDK根目录并将其bin加入PATH,通过java -version和javac -version验证版本一致,IDE需手动指定SDK避免缓存干扰。
很多初学者下载的是 JRE(Java 运行环境),但开发必须用 JDK(Java 开发工具包)。JRE 不含 javac 编译器,运行 javac -version 会报错 command not found 或 'javac' is not recognized。
JDK(如 jdk-21.0.3),别选 JRE
C:\Program Files\Eclipse Adoptium\jdk-21.0.3-hots是否存在pot\bin\javac.exe
SDKMAN! 管理多个 JDK 版本:curl -s "https://get.sdkman.io" | bash,再执行
sdk install java 21.0.3-tem
JAVA_HOME 必须指向 JDK 根目录(不是 bin 子目录),否则 Maven、Gradle、IDE 会找不到编译器。
JAVA_HOME = C:\Program Files\Eclipse Adoptium\jdk-21.0.3-hotspotPATH += %JAVA_HOME%\bin
~/.zshrc 或 ~/.bash_profile 中):export JAVA_HOME=$(/usr/libexec/java_home -v 21) export PATH=$JAVA_HOME/bin:$PATH
echo $JAVA_HOME 和 which javac,二者路径应能对应上新手常误以为必须装 IntelliJ IDEA 或 Eclipse 才能写 Java,其实用记事本 + 终端就能完*部开发流程。
mkdir hello && cd hello
echo 'public class Hello { public static void main(String[] args) { System.out.println("OK"); } }' > Hello.java
javac Hello.java
java HelloVS Code + Extension Pack for Java 插件组合,启动快、无臃肿功能干扰NetBeans 或旧版 Eclipse:它们自带捆绑 JDK,容易和系统环境变量冲突,导致 javac 版本与 java 版本不一致IDE 常缓存旧的 JDK 配置,即使你改了系统变量,它仍可能用内置 JRE 运行程序,造成“明明配好了却报错”的假象。
java -version javac -version java -cp . Hello(确保当前目录有
Hello.class)java -version 和 javac -version 输出主版本号不同(如一个是 17,一个是 21),说明 PATH 混入了其他 JDK 的 bin
Project SDK(IntelliJ)或 Java Runtime(VS Code 设置里的 java.configuration.runtimes),不能依赖自动探测JAVA_HOME 指向了 JRE 目录、PATH 里混了多个 JDK 的 bin、或者 IDE 没刷新 SDK 列表。这些地方一旦错位,错误信息往往不直接提示根源,而是表现为编译失败、类找不到、甚至中文乱码。