news 2026/9/16 6:25:24

JDK安装与环境变量配置指南:从零搭建Java开发环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JDK安装与环境变量配置指南:从零搭建Java开发环境

刚学 Java 的时候,大多数人碰到的第一道坎不是语法,而是装环境。你兴冲冲去搜「JDK 下载」,结果点进一个满是广告的页面,下到一个来路不明的安装包,装上之后 javac 又提示「不是内部或外部命令」,好不容易配好了环境变量,重开终端发现 java -version 还是老版本。这一套折腾下来,没开始写 Hello World 就已经累得够呛。

我写这篇整理,就是想把这些弯弯绕绕一次讲清楚:JDK、JRE、JVM 到底是什么关系,版本和发行版该怎么选,Windows / Mac / Linux 分别怎么装,环境变量的原理和配置方法,以及配置失败时完整的排查思路。内容尽量详细,但不会扯太多用不上的理论,目标是让一个完全零基础的新手,照着这篇文章能独立把 Java 开发环境跑起来,并且知道自己每一步在做什么。

1. 先弄清楚 JDK、JRE、JVM 的关系,配置时才不会迷糊

很多新手一上来就百度「JDK 安装教程」,装完就完事,根本不关心装了什么东西。结果没过两天就遇到问题:有人告诉你只需要装 JRE,有人说要装 JDK,还有人说什么 JDK 是免费的开源版,你听得一头雾水。花五分钟把这三个概念理清楚,后面所有步骤都会变得很顺。

1.1 JVM、JRE、JDK 各管哪一段

JVM(Java Virtual Machine)是 Java 程序真正运行的地方,它负责读取编译后的 .class 字节码文件,然后把字节码翻译成当前操作系统能识别的机器指令。Java 号称「一次编写,到处运行」,靠的就是 JVM 在中间做适配。Windows 上的 JVM 和 Linux 上的 JVM 实现不一样,但对 Java 代码来说,接口是统一的。

JRE(Java Runtime Environment)是运行 Java 程序所需的最小环境,包含 JVM 和它运行时依赖的核心类库。如果你只是要运行别人写好的 Java 程序,装 JRE 就够了,公共图书馆里你只是去借书看,不需要知道书是怎么印刷的。

JDK(Java Development Kit)是给开发人员用的完整工具包,包含 JRE 的全部内容,还额外提供了 javac(编译器)、jar(打包工具)、javadoc(文档生成工具)等一系列开发工具。你要写 Java 代码,就必须装 JDK,因为光有 JRE,你连编译这一步都做不了。

用做饭来类比:JVM 是燃气灶,负责把火点着;JRE 是厨房的基本设施,锅碗瓢盆柴米油盐都在里面;JDK 则是整套厨房外加菜谱和刀具升级包——你可以做饭,还拥有了研发新菜的能力。

1.2 开发时必须装 JDK,别被「装个 JRE 就行」误导

网上有不少老教程说,普通用户运行 Java 程序只需要装 JRE。这话没毛病,但你要开发,就必须 JDK。javac 这个编译器是 JDK 独有的,你把 .java 源码交给它,它才会帮你生成 JVM 能解释执行的 .class 文件。只装 JRE 的话,你连第一个 Hello World 都编译不了。

另一个常见的误解是「JDK 太大了,装精简版就行」。JDK 本身的体积是几百 MB,对现代硬盘来说根本不值一提。别为了省空间去装什么迷你版、精简版,最后缺胳膊少腿,编译到一半报错,排查起来更麻烦。

1.3 装完 JDK 之后,你其实拥有一整套工具

JDK 装好之后,它的 bin 目录下有一堆可执行文件,新手不需要全认识,但这几个最常用的最好留个印象:

命令作用使用场景
java启动 JVM,运行已编译的 .class 文件运行程序最关键的命令
javacJava 编译器,把 .java 源码编译成 .class编译程序时使用
jar打包工具,把多个 .class 文件打包成 jar发布项目、制作可执行包时使用
javadoc根据源码注释生成 API 文档给项目生成开发文档时使用

后面配置 PATH 环境变量,本质就是让系统能在任何目录下找到这些命令。理解了这一点,你就知道配置环境变量不是玄学,只是告诉操作系统「我要用工具的时候,去哪个文件夹里找」。

2. 版本和发行版怎么选:JDK 8、11、17、21 到底装哪个

这是新手最容易纠结的问题。你去搜索引擎一看,有人说 Java 8 是经典永不过时,有人说 Java 17 才是长期支持版本,还有人推荐 Oracle JDK,同时一堆人提醒你 Oracle 要收费。信息一多,选择就变难了。

2.1 版本编号的演变:从 1.8 到 8 再到 17

Java 的版本号经历过一次比较大的调整。早期版本叫 JDK 1.0、JDK 1.8,但到了 Java 5 之后,官方开始把对外版本号直接用整数表示,于是 JDK 1.8 对外就叫 Java 8。这也是为什么你会看到各种教程里「JDK 1.8」和「Java 8」混着用,其实指的是同一个东西。

Java 8 之后,Oracle 改变了发布节奏,从原来「一个版本用很多年」变成「每六个月发布一个新版本」。于是版本号开始快速跳:9、10、11、12……直到现在的 21。版本多了,企业不可能每六个月就升级一次,于是引入了 LTS(Long Term Support,长期支持)的概念。只有标记为 LTS 的版本会获得长时间的安全补丁和性能更新,非 LTS 版本往往只是短暂过渡,性能测试完就被放在了某个仓库里。

对我个人而言,新手选 LTS 版本就完事了。Java 8 是过去十年的绝对主流,很多老项目还在用它;Java 11 是 Java 8 之后第一个 LTS,但定位略显尴尬;Java 17 是目前在生产环境中接受度最高的一个版本,既新又有长期支持;Java 21 是 2023 年发布的 LTS,特性更新很多,属于面向未来的选择。

版本是否为 LTS适合谁
Java 8 (1.8)是(但已进入维护末期)维护老项目、部分学校教材
Java 11过渡版本,新项目已较少选用
Java 17新项目主力选择,教材和生态都比较成熟
Java 21想用最新特性、不担心生态兼容性问题

如果你没有特殊理由,直接装 Java 17。教科书、教程、开源项目对 17 的兼容性是目前最好的,等以后需要升级到 21,你理解了环境变量原理之后,改起来也就五分钟的事。

2.2 Oracle JDK 和 OpenJDK:授权模式到底怎么回事

很多新手在下载环节被「收费」两个字吓住了。其实事情是这样的:Oracle JDK 是 Oracle 公司发布的官方 JDK,从 Java 17 开始,Oracle 调整了它的许可协议,允许个人和开发者在开发、测试、演示等场景下免费使用,但在生产环境大规模部署时,需要购买商业许可。

对比之下,OpenJDK 是 Java 技术的开源参考实现,由社区和多家公司共同维护,它是完完全全免费、可以自由使用的。Oracle 最初在 OpenJDK 项目中的贡献比例很高,后来逐渐把重心转移到自己的商业化产品上,但 OpenJDK 这个项目本身依然健康地发展着。

对绝大多数个人开发者和学生来说,装 OpenJDK 或者基于 OpenJDK 构建的其他发行版,完全免费且合法,功能上跟 Oracle JDK 几乎没有差别。教你一个判断标准:只要不是公司环境里需要大规模部署生产系统,选一个主流 OpenJDK 发行版就行,完全不用担心授权问题。

2.3 常见 OpenJDK 发行版怎么挑

市场上基于 OpenJDK 的发行版不少,新手不需要都了解,但要能看懂它们的存在:

  • Eclipse Temurin(原 AdoptOpenJDK):目前社区最活跃、最推荐给个人的选择,由 Adoptium 社区维护,有完善的 Windows、macOS、Linux 安装包;
  • Amazon Corretto:亚马逊维护的发行版,在云服务器领域用得多,性能稳定;
  • Azul Zulu:做嵌入式和高性能场景较多,个人使用也完全没问题;
  • 龙井 JDK(Dragonwell)等国内发行版:对中文用户有一些本地化优化,但个人学习阶段没有特别明显的差别。

我自己的习惯是推荐 Eclipse Temurin。原因很简单:安装包友好、更新及时、社区资料多。你之后遇到任何问题,搜索英文关键词「Temurin」加上错误信息,能比「Oracle JDK + 问题描述」搜到更多有效结果。

3. Windows 手动安装全流程:下载、安装、验证一次说清

Windows 是绝大多数新手的第一台开发环境,所以这里我用最多的篇幅,从下载开始一步步走。假定你的系统是 Windows 10 或 Windows 11,64 位。

3.1 下载 JDK 的正确姿势,别被搜索引擎带偏

不要直接在搜索引擎里搜「JDK 下载」,然后点进开着「高速下载」广告的网站。那些绿色版、破解版、极速版安装包,绝大多数都捆绑了推广软件,或者干脆是修改过的版本,出了安全问题得不偿失。

正确路径是找到官方下载页:

  1. 打开 Adoptium 官网(adoptium.net);
  2. 页面顶部选择版本,比如 17;
  3. 操作系统选 Windows,架构选 x64;
  4. 安装包类型选.msi(推荐)或者.zip
  5. 点击下载,等待文件下载完就开装。

如果你确实想用 Oracle JDK,那就要找 Oracle 官方的下载页面,注意区分「Java SE 17 Archive Downloads」和「Oracle JDK 21」的不同入口,同样认准官网域名,不要进镜像站和第三方下载站。

这里有个容易被忽略的细节:安装包分.msi.zip两种。.msi是 Windows 的安装程序格式,会帮你自动写入注册表、配置卸载信息,新手强烈建议选它;.zip是绿色解压版,更适合熟悉命令行的高级用户,不需要双击安装程序,解压到目录然后手动配环境变量就行。

3.2 安装过程中的三个关键选择

双击 .msi 文件之后,安装向导会出现几个选项,大部分保持默认即可,但有几个地方老手会特意留意:

第一,安装路径。默认路径一般是C:\Program Files\Eclipse Adoptium\jdk-17.x.x-windows-x64,路径中包含空格和特殊字符,理论上配置环境变量时用引号包裹就能处理,新手操作时最容易在这里出错。我通常建议把 JDK 装到一个自定义目录,路径中只有英文字母和数字,例如D:\Java\jdk-17。这样后面配置 PATH、查找文件、排查问题都省事。

第二,是否安装「Public JRE」。新版 JDK 安装向导会问你要不要额外安装一个公共 JRE。这里直接不勾选就行,原因在前面说过:JDK 里面自带完整的 JRE,你不需要重复装一个。

第三,是否需要设置 JAVA_HOME 和 PATH。新版安装器在最后一步会提供自动设置环境变量的选项,默认勾选。但我不建议你依赖这一步,因为它设置的 PATH 只指向 java.exe 所在目录,不会自动配置 JAVA_HOME,后面 Maven、Tomcat、IDE 之类工具仍然找不到 JDK。稍后我会带着你手动把这个配置补全。

3.3 用命令验证安装是否成功

安装完成后,按Win + R,输入cmd回车,打开命令行窗口,输入:

java -version

如果能看到类似下面的输出,说明 Java 运行环境已经就绪:

openjdk version "17.0.x" 2024-xx-xx OpenJDK Runtime Environment Temurin-17.0.x+x (build 17.0.x+xx) OpenJDK 64-Bit Server VM Temurin-17.0.x+x (build 17.0.x+xx, mixed mode, sharing)

再输入javac -version,如果也能正常输出版本号,说明编译器也装好了。但很多新手在这里会遇到一个经典问题:java -version能显示,javac却提示找不到命令。为什么会这样,我在后面的环境变量部分专门解释。

4. 环境变量配置:JAVA_HOME 和 PATH 的作用与正确写法

环境变量配置是整个 JDK 安装过程中最劝退新手的一道坎,留言区里十个问题有八个是「改了 JAVA_HOME 为什么还是不行」。这一节我们把原理讲透,把步骤列清楚,一次搞定。

4.1 为什么非要配环境变量,不配行不行

不配环境变量不是不行,你每次打开命令行,都需要输入完整路径来运行 javac,比如:

C:\Program Files\Eclipse Adoptium\jdk-17.0.x\bin\javac -version

因为 Windows 在执行命令时,默认只会在当前目录和 PATH 环境变量指定的目录里寻找可执行文件。你把 JDK 的 bin 目录加进 PATH,就等于告诉系统「以后我去哪儿都能直接调用 java 和 javac」。这一行配置,省掉的是你未来成千上万次敲完整路径的麻烦。

4.2 JAVA_HOME 到底是什么,为什么所有工具都找它

JAVA_HOME 是一个约定俗成的环境变量,指向 JDK 的安装目录。Windows 本身并不会自动调用它,但是 Maven、Gradle、Tomcat、Eclipse 等工具在启动时会去读取这个变量,用它来定位 JDK 的位置。

你可以把 JAVA_HOME 理解成一个「公共通讯录」。各种工具不需要自己在配置文件里写死 JDK 路径,只需要去通讯录里查一下 JAVA_HOME 就知道该找谁。这样当你要切换 JDK 版本时,只改 JAVA_HOME 一个变量就够了,不用挨个修改所有工具的配置。

提示:JAVA_HOME 的值是 JDK 根目录,不是 bin 目录。很多人在这里拼错路径,导致 Maven 启动时报「Unable to locate the Javac Compiler」之类的错。

4.3 Windows 下的完整配置步骤

以 Windows 11 为例,步骤和 Windows 10 几乎一致:

  1. 右键「此电脑」→ 选择「属性」;
  2. 左侧点击「高级系统设置」;
  3. 点击「环境变量」按钮;
  4. 在下方的「系统变量」区域,点击「新建」;
  5. 变量名填JAVA_HOME,变量值填你的 JDK 安装路径。如果你安装时用的自定义目录,比如D:\Java\jdk-17,就填这个完整路径,不要带 bin;
  6. 点击「确定」保存。

接着配置 PATH:

  1. 在「系统变量」区域找到Path,选中后点击「编辑」;
  2. 点击「新建」,在空白行输入%JAVA_HOME%\bin
  3. 把这一行用「上移」按钮移动到顶部,确保它排在其他 Java 相关路径之前;
  4. 一路点击「确定」保存所有窗口。

这里有个细节值得说清楚:PATH 里为什么要写%JAVA_HOME%\bin,而不是直接把完整路径写死?因为这样实现了「单点修改」。以后你要把 JDK 从 17 换成 21,只需要改 JAVA_HOME 一个变量,PATH 自动跟着变,不用维护两处。新手看网上教程时,有时候看到写完整路径的,有时候看到写%JAVA_HOME%的,都行,但用变量引用是更好的习惯。

4.4 CLASSPATH 到底要不要配,为什么我用新的 JDK 没配也能跑

这个问题每隔一段时间就会被翻出来。最早学习 Java 的人可能都配过 CLASSPATH 和 PATH,但是到了现代 JDK(Java 9 之后),CLASSPATH 已经不再需要手动配置了。JDK 会默认从当前目录加载类,所以你不需要像老教程那样配置.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

更准确地说,Java 9 引入模块化系统之后,JDK 的目录结构变了,lib 下的很多 jar 被整合进了模块系统,老教程里那套 CLASSPATH 写法完全过时了。如果你在网上搜到一篇年代久远的教程让你配 CLASSPATH,可以直接跳过这一步。

4.5 修改完环境变量后,必须重开命令行

一个超高频踩坑点:修改完环境变量,在命令行窗口里立刻输入java -version,发现还是旧版本,或者压根没变化。原因很简单,环境变量的读取发生在进程启动的时候,你当前已经打开的命令行窗口读取的还是旧环境变量。

正确做法是:保存所有配置窗口之后,关闭所有命令行窗口,重新开一个新的。如果你是用 IDE 内置终端运行配置命令,那需要完全重启 IDE 才能读到这里。

5. Mac 和 Linux 上的 JDK 安装路径参考

虽然用 Windows 入门的人最多,但 Mac 和 Linux 的用户也很常见。这两个系统和 Windows 的安装方式差异比较大,但核心逻辑是一回事:下载 JDK、确定安装目录、配置 JAVA_HOME 和 PATH。

5.1 Mac 用户推荐用 Homebrew 安装

Mac 上安装 JDK,最简单的方式是用 Homebrew。如果你已经装好了 Homebrew,只需在终端执行:

brew install openjdk@17

安装完成后,Homebrew 会告诉你 JDK 装到了/usr/local/opt/openjdk@17//opt/homebrew/opt/openjdk@17/目录下,但 macOS 系统默认不会把它加入 PATH,需要手动做一次软链接或配置环境变量。

个人更推荐配置环境变量的方式,因为可控性更强。编辑~/.zshrc文件(macOS 默认是 zsh 终端),在末尾添加:

export JAVA_HOME=$(/usr/libexec/java_home -v 17) export PATH=$JAVA_HOME/bin:$PATH

其中/usr/libexec/java_home是 macOS 自带的 JDK 路径查找工具,用它动态获取路径,以后装了多个 JDK 也能准确找到 17 的位置。

保存后执行:

source ~/.zshrc java -version

如果之前用的是 Oracle JDK 的 pkg 安装包,也可以用这种方式验证是否安装成功,命令不需要变。

5.2 Linux 服务器部署时用包管理器安装

Linux 服务器的场景一般是不带图形界面的,使用包管理器安装最省事。Ubuntu / Debian 系执行:

sudo apt update sudo apt install openjdk-17-jdk

CentOS / RHEL / Fedora 系执行:

sudo yum install java-17-openjdk-devel

注意 Debian 系的包名带-jdk后缀,Red Hat 系要带-devel后缀。很多新手只装了openjdk-17-jre或者java-17-openjdk,结果运行时是不缺,但找不到 javac 编译命令,就是这个包名细节导致。

包管理器装的 JDK 会自动创建环境变量指向,通常不需要你手动配置。可以用update-alternatives --config java查看当前系统启用的 Java 版本,也可以用readlink -f $(which java)查看 java 命令真实指向的路径。验证命令:

java -version javac -version echo $JAVA_HOME

如果echo $JAVA_HOME输出为空,那就需要手动往~/.bashrc/etc/profile里添加配置:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH

路径里的具体目录可以通过update-alternatives --list java的输出反推出来,不同发行版存放路径会有一点差别。

6. 新手最容易踩的坑:环境变量配置失败的完整排查思路

配置环境变量是一门玄学吗?不是,它其实是一套有逻辑的「找文件」流程。我把平时被问得最多的几个现象整理出来,一步一步拆给你看背后的原因和排查方法。

6.1 症状一:java -version 能执行,但 javac 提示「不是内部或外部命令」

这是出现频率最高的一个问题。现象是运行java -version完全正常,但输入javac -version却报告找不到命令,或者显示「javac 不是内部命令」。

先想一个问题:javajavac明明都在同一个 bin 目录下,为什么一个能找到,另一个找不到?答案往往是——你电脑里其实装了不止一个 Java 环境。可能你之前装过 JRE,它把java.exe放到了系统目录中并加入 PATH;后来你又安装了 JDK,安装器虽然也把 JDK 的 bin 加进了 PATH,但顺序上排在 JRE 的路径之后。系统执行命令时从上往下找,找到第一个java.exe就停了,根本没机会走到 JDK 那条路径。

解决办法很简单:打开环境变量编辑器,把 PATH 里%JAVA_HOME%\bin这一行移动到所有 Java 相关路径的最前面。我之前在配置步骤里特意提到这一点,就是因为它直接影响命令解析的顺序。

6.2 症状二:配置完 JAVA_HOME 后还是找不到 JDK

如果 JAVA_HOME 配置了,Maven 或 IDE 还是报找不到 JDK,先按下面顺序排查:

  1. 检查变量名是否写错。JAVA_HOME 必须全部大写,下划线只有一个。写成 Java_Home、JAVA_HOME_ 之类都会被直接忽略;
  2. 检查变量值是否带上了 bin。JAVA_HOME 的值应该是D:\Java\jdk-17,不是D:\Java\jdk-17\bin,两者区别很大;
  3. 检查路径是否真实存在。打开资源管理器,把变量值拷进去看能不能访问到。新手特别喜欢在路径后面多打一个空格,或者复制时带上了引号,这些都会让路径校验失败;
  4. 在命令行里直接执行echo %JAVA_HOME%,看系统实际读取到的值是什么。这是最快确认问题的方法,如果输出的值跟你配置的不一样,说明改错了位置——很可能改成了用户变量,但输入到你使用的终端里的还是系统变量。

6.3 症状三:装好了 JDK 17,java -version 显示的还是旧版本

这个现象和 6.1 本质上是同一个原因的变种:系统的 PATH 里存在多个 Java 相关路径,而且旧版本排在前面。

处理方法有两种。简单粗暴版:把 PATH 里旧的 Java 路径删掉,只保留%JAVA_HOME%\bin这一个。稳妥上线版:在 cmd 里执行where java,这个命令会列出系统实际找到的所有 java.exe 的位置。输出结果从上到下就是命令查找的优先级,你根据输出调整 PATH 顺序即可。

提示:修改完环境变量,一定要重开终端。如果重开后还是旧版本,还有一个进阶排查点——可能是系统目录C:\Windows\System32下存在 java.exe,这个目录在 PATH 里的优先级很高。这种情况通常是某个软件安装时自动放进去的,直接删除或改名那个文件就能解决。

6.4 症状四:安装器提示「Java 已安装」但找不到任何目录

一些下载站的安装包可能把 JDK 解压到了临时目录,或者注册信息写得不完整。这种情况下不要硬删,最干净的办法是:

  1. 打开「控制面板」→「程序和功能」,看列表中是否有 JDK 对应的条目;
  2. 如果有就直接卸载,然后重新安装你下载的官方 .msi 文件;
  3. 如果没有,就全盘搜索javac.exe,找到路径后按刚才的方法手动配置环境变量;
  4. 如果搜索也找不到,那就直接重装一次,安装时换一个自定义目录,比如D:\Java\jdk-17,这样可以跟残留文件彻底隔离。

6.5 症状五:IDE 里能运行代码,但项目一启动就报「Error: Could not find or load main class」

这个报错很多新手也遇到,而且第一反应是「我 JDK 装错了,要不要重装 JDK」。其实大多数情况是运行配置的问题:要么当前工作目录(classpath)设置不对,要么类名跟文件名不一致。

在 IDEA 或 Eclipse 里,这类问题通常通过清理并重新构建项目解决。命令行环境下,要先把 .java 文件所在目录设为当前目录,再执行java 类名,而且不要带 .class 后缀。JDK 环境本身没多大问题,重装是浪费时间。

7. 安装完成后的第一课:命令行编译和 IDE 集成

环境配置好之后,建议先别急着开 IDE,先在命令行亲手体验一次「源码 → 编译 → 运行」的完整流程。这个过程能让你深刻理解 Java 程序是怎么从代码变成可运行程序的,也给以后排查各种 IDE 相关问题打下基础。

7.1 第一个 Java 程序,用命令行跑通

找一个干净的目录,用记事本(或者任意编辑器)新建一个文本文件,改名为HelloWorld.java,注意文件名必须和类名一致,区分大小写。内容写:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Java!"); } }

打开命令行,进入这个文件所在目录:

cd D:\code\java-demo

执行编译:

javac HelloWorld.java

编译成功后,目录下会多出一个HelloWorld.class文件,这就是 JVM 能读懂的字节码。接着运行:

java HelloWorld

如果输出Hello, Java!,恭喜你,整个 Java 开发环境已经彻底打通了。这时候你再去 IDE 里写代码,遇到「找不到 JDK」或者「无法编译」之类的问题,心里会更有底,因为你已经知道:问题不在 JDK,而在于 IDE 没有正确找到你机器上的 JDK。

7.2 VS Code 里配置 Java 开发环境

VS Code 是目前相当一部分新手的选择,因为体量小、启动快、插件的战斗力也足够。装完 JDK 之后,在扩展市场搜索并安装以下两个扩展:

  • Extension Pack for Java:官方推荐的合集,包含语言支持、调试器、Maven 支持和测试工具;
  • Spring Boot Extension Pack:如果之后要学 Spring Boot 再装,新手阶段可以先不装。

扩展安装完成后,VS Code 会自动检测本机已经安装的 JDK。如果没有自动识别,可以按Ctrl + Shift + P打开命令面板,输入Java: Configure Java Runtime,在打开的页面里手动添加 JDK 路径。这本质上还是把「找 JDK」的动作告诉 IDE,路径就填你之前配置的 JAVA_HOME 对应的目录。

7.3 IntelliJ IDEA 创建第一个项目的关键步骤

如果你用的是 IntelliJ IDEA,新手初始化项目时会碰到一个界面:Project SDK 下拉框为空。不用慌,在已有 JDK 的情况下:

  1. 点击下拉框,选择Add JDK...
  2. 在弹出的文件选择窗口里,直接定位到 JDK 安装目录;
  3. 选中后 IDEA 会自动识别版本号,点击确定即可;
  4. 再勾选Create project from template,选择Command Line App,这样会帮你生成一个带 main 方法的类。

之后你在 IDEA 里写代码,几乎所有功能都依赖 JDK 提供的能力,不管是代码提示、编译运行、调试还是打包,底层都是调用 JDK 的命令和工具。

7.4 不同 JDK 版本切换的实用技巧

最后分享一个在实际工作中特别常用的技巧。很多项目对 JDK 版本有硬性要求,比如老项目只能用 Java 8,新项目用 Java 17,你需要在一台电脑上装多个 JDK 并随时切换。

Windows 上的土办法是每次改 JAVA_HOME,但是不够优雅。我个人的建议是安装 sdkman 这类工具,不过 sdkman 在 Windows 下需要借助 WSL 或者其他终端模拟器,用法相对复杂。如果你只想简单地在多个 JDK 之间切换,也可以不纠结工具,手动维护一个 JDK 目录,把不同版本的 JDK 分别解压到:

D:\Java\jdk-8 D:\Java\jdk-17 D:\Java\jdk-21

需要切到哪个版本,就把 JAVA_HOME 指向哪个目录,PATH 里保留%JAVA_HOME%\bin不变。这样一个临时的小动作只需要两三分钟,同时能避免在同一个项目里出现「这个命令是 8 的、那个命令是 17 的」这种混乱局面。

我在实际给项目搭环境的过程中,最后悔的一件事是刚入行时没有记住「先理解原理,再操作」。如果你现在配置 JDK 时遇到报错,先别急着删了重装,试着按报错信息去猜「它找不到的是哪一个文件」,再顺着 PATH 的查找顺序检查几步,多半能自己解决。这一套排查思路,在未来配置 Python、Node.js、数据库等任何开发环境时都适用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 6:24:50

COMSOL多极子分解在环形电磁结构分析中的应用

1. 环结构电磁问题的工程背景与挑战在电磁场工程应用中,环形结构广泛存在于各类关键设备中——从粒子加速器的射频腔体到无线充电系统的耦合线圈,从MRI设备的梯度线圈到量子计算中的超导环。这类结构产生的电磁场往往呈现出复杂的空间分布特性&#xff0…

作者头像 李华
网站建设 2026/9/16 6:24:40

自动驾驶ACC与CACC控制算法在Simulink中的建模与实践

1. 自动驾驶控制算法建模概述在智能交通系统快速发展的今天,自适应巡航控制(ACC)和协作式自适应巡航控制(CACC)已成为自动驾驶汽车的核心功能模块。这两种控制算法能够显著提升行车安全性和道路通行效率,是当前自动驾驶技术研究的热点方向。作为一名长期…

作者头像 李华
网站建设 2026/9/16 6:22:23

Cocos2dx塔防游戏开发:地图数据建模与瓦片渲染实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 6:21:40

用OpenCV手势识别驱动打地鼠游戏:从肤色分割到坐标映射

简介:这是一套基于OpenCV与MediaPipe手势识别的人机交互打地鼠项目完整工程,面向计算机专业做HCI课程设计、毕业设计或交互对比实验的开发者。项目通过识别食指与中指顶部骨节点位置判定手势,完成光标移动与地鼠打击,并设计有线鼠…

作者头像 李华
网站建设 2026/9/16 6:20:21

STM32启动流程深度解析:从复位向量到main的7个关键环节

1. 这不是“Hello World”的终点,而是嵌入式世界的真正起点你写过int main() { printf("hello world"); return 0; },编译、运行、看到那行字——那一刻你觉得自己掌握了C语言。但如果你把这段代码原封不动放进STM32工程里,Keil或S…

作者头像 李华
网站建设 2026/9/16 6:19:45

Hugging Face工具链实战:从数据到部署的NLP开发指南

1. Hugging Face生态全景解析Hugging Face已经成为当今NLP领域的事实标准工具链,其核心组件Datasets、Tokenizers和Transformers三大库构成了完整的模型开发流水线。这个生态系统的设计哲学是"让最先进的NLP技术民主化",通过标准化的API接口降…

作者头像 李华