新手学Java,第一步永远绕不开两样东西:JDK和IDEA(IntelliJ IDEA)。我见过太多人卡在环境配置这一步,教材看了一大堆,代码一行没写,光是配个环境变量就劝退了一大半。其实这件事本身没有任何技术难度,纯粹是信息太碎、教程太老、踩坑太多,导致简单的事情被搞复杂了。
这篇文章就把JDK和IDEA的下载、安装、环境变量配置、IDEA关联JDK、创建第一个项目,整个过程完整走一遍。我会把每一步操作的意图讲清楚,把需要避开的坑提前标出来,也会把环境变量配置失败、找不到JDK、IDEA闪退这类常见问题单独拎出来说。无论你是完全零基础的新手,还是想把手上的环境重新清理一遍的开发者,按这篇文章的顺序做,基本不会出问题。
1. 整体思路与版本选型
1.1 为什么JDK和IDEA要配套使用
很多刚入门的同学会混淆几个概念:JDK、JRE、IDE。简单说,JDK是Java Development Kit,即Java开发工具包,它包含了编译工具(javac)、运行环境(JRE)、调试工具等一整套能力。JRE是Java Runtime Environment,只负责跑Java程序,不提供开发能力。IDE(集成开发环境)则是用来写代码的操作台,IDEA就是其中非常主流的一款。
换一个生活化的类比:JDK好比一套完整的厨房设备(灶台、锅、刀具),JRE是别人已经做好的成品菜,而IDEA就是你工作的厨房台面。你只能在厨房台面上,用整套设备,从切菜到烹饪,最后做出一道菜来。三者缺一不可。
IDEA本身是用Java写的,所以它运行也需要一个JDK环境。安装顺序必须是先说“先装JDK、再装IDEA”,因为IDEA在启动和创建项目时,需要调用JDK提供的工具链。如果顺序反了,或者JDK环境变量没配好,IDEA经常会报“找不到JDK”之类的错误,后面我会在问题排查部分详细说。
1.2 JDK版本怎么选:LTS是底线
JDK的版本迭代非常快,现在已经出到21甚至更高了。但版本多并不意味着选最新的就最好。这里我建议一个原则:非特殊需求,优先选LTS(Long-Term Support,长期支持)版本。LTS版本意味着官方会提供长期的更新和维护,适合稳定学习和生产使用。目前主流的LTS版本有JDK 8、JDK 11、JDK 17、JDK 21。
JDK 8是很多老项目和教材还在用的版本,生态非常成熟,网上教程也最多。但实话实说,JDK 8真的太老了,很多新特性缺失,而且IDEA新版对JDK 8的兼容性提示也变多了。如果你完全是新入门,我更推荐JDK 17,它是目前主流采用率最高、教程最丰富、IDEA支持最好的一个版本。JDK 21虽然更新,但一些教程和框架还没有完全跟上,容易遇到冷门问题。
选版本还有一个隐藏逻辑:学校教材或者网课如果指定了版本,就直接按指定版本装,不要自己换。因为某些老课程里的代码在JDK 17下编译会报错,而新版JDK已经移除了部分旧API。反之,如果课程是新的,用了记录类、switch表达式等新语法,JDK 8又跑不起来。先看教程要求,再定版本。
1.3 IDEA版本与JDK版本怎么搭
IDEA分为两个版本:社区版(Community)和旗舰版(Ultimate)。社区版免费、开源,功能上屏蔽了Spring、数据库工具等企业级功能,但对学习Java SE基础语法、写控制台程序、做课程设计完全够用。旗舰版收费,功能全,适合做Web开发和Spring Boot项目。
骄傲地说,社区版足够覆盖大半的入门需求,没必要一上来就找激活破解相关的资源,直接用免费版本,少踩很多没必要的坑。IDEA版本与JDK版本的配合方面,新版IDEA(2023年起)对JDK 17的支持已经非常成熟,默认模板也偏向JDK 17。只要JDK选的是17,IDEA就用最新的稳定大版本,两者不会冲突。
2. JDK下载、安装与环境变量配置
2.1 JDK安装包去哪下载
下载JDK一定要认准官方渠道:Oracle官网(oracle.com)。不要用搜索网站搜“JDK下载”,很容易下载到捆绑了全家桶的第三方安装包。这里有一个非常实用的技巧:搜索时加“官网”二字,或者直接记住官方域名,从根源上避免垃圾软件的干扰。
Oracle官网的JDK下载页面叫“Java Downloads”,进去之后会看到不同版本的JDK列表。选择你需要的JDK 17,确认系统是Windows还是macOS,再确认CPU架构是x64还是ARM64。大多数人Windows电脑选“Windows x64 Installer”就行,是一个.msi后缀的安装包。如果你的电脑是苹果M系列芯片,就选macOS ARM64的.dmg格式。
另外还有一种下载渠道是OpenJDK发行版,比如Adoptium、Amazon Corretto等,它们是开源的JDK实现,完全免费,与Oracle JDK在功能上基本等价。新手没必要折腾这些,直接用Oracle官网的公开版本,步骤最简单。
2.2 Windows下的安装过程与路径选择
双击.msi安装包后,基本一路“Next”就能完成,但有几个地方需要留意一下。
安装目录默认在C:\Program Files\Java\jdk-17,建议直接保留默认,不要改到带中文或空格的路径。中文路径在后续配置环境变量时可能引发奇怪的问题,空格虽然能处理,但会平白增加命令行的转义复杂度。如果你确实想改,也请保证路径中只有英文字母、数字和下划线,例如D:\dev\jdk-17。
安装过程中会弹出“JAVA_HOME”的提示吗?实际不会,JDK安装包只会把必要的文件解压到指定目录。环境变量需要你自己手动配置,这一步才是很多人翻车的核心环节。
初学者可能会问,为什么要手动配环境变量?因为Windows系统不会自动知道JDK装在了哪里。你打开命令行输入java,系统需要去某个目录下找寻java.exe。环境变量就是告诉系统“JDK在这个位置,你从这个位置找”,本质上是一个路径指引。
2.3 环境变量核心配置:JAVA_HOME、Path、CLASSPATH
配置环境变量的路径是:右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。在打开的窗口里,你会看到两个区域:用户变量和系统变量。
第一步,新建JAVA_HOME变量。在“系统变量”区域点击“新建”,变量名填JAVA_HOME,变量值填JDK的安装目录,比如C:\Program Files\Java\jdk-17。注意,这里只需要写到JDK的根目录,不要多写多余的子路径。
第二步,修改Path变量。在“系统变量”区域找到Path,选中后点击“编辑”,在弹出窗口中点击“新建”,填入%JAVA_HOME%\bin,然后确定保存。这里%JAVA_HOME%是引用刚才设置的环境变量,bin目录下存放了java.exe、javac.exe等官方工具命令。配置Path的目的,是让你在任何目录下打开命令行,都能直接执行java命令。
第三步,CLASSPATH要不要配。这是网上争议比较多的地方。JDK 5以后,JVM已经不再依赖CLASSPATH环境变量来查找基础类库,默认会从JDK目录下的lib目录加载,所以新版本JDK可以完全不设置CLASSPATH。这个变量在旧教程里经常出现,新手配错反而会引发“找不到类”的问题。我的建议:无需配置,留空即可。
2.4 验证安装是否成功
环境变量配置完成后,需要重启命令提示符窗口(重要:已经打开的窗口不会自动加载新的环境变量,必须重新打开一个CMD窗口),然后依次输入两条命令。
输入java -version,如果能输出如下类似内容,说明JDK安装成功:
java version "17.0.12" 2024-07-16 LTS Java(TM) SE Runtime Environment (build 17.0.12+8) Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8, mixed mode, sharing)再输入javac -version,如果输出javac 17.0.12,说明编译器也可用。假如java -version正常,但javac -version提示“不是内部或外部命令”,大概率是Path配置只配到了java的路径,而没配到bin目录下的javac。回到Path里检查%JAVA_HOME%\bin这一项是否真的存在。
3. IntelliJ IDEA下载、安装与首次配置
3.1 下载IDEA:社区版还是旗舰版
IDEA的官网是jetbrains.com,进入首页后在“Developer Tools”菜单下选择“IntelliJ IDEA”,页面会让你在“Ultimate”和“Community”之间选择。这里不要犹豫,学习和基础开发直接下载Community版。
社区版免费、开源、无需激活,对新手是零门槛。旗舰版功能虽然强大,但需要付费订阅;网上流传的各种激活方式都不合法,且往往捆绑恶意脚本,完全没有必要去冒这个风险。如果你以后确实需要旗舰版的企业级功能,JetBrains官方也提供30天免费试用,可以按规则体验。
下载时同样注意系统版本:Windows对应.exe安装包,macOS对应.dmg。安装包体积不小(社区版约600MB),网速慢的话耐心等待就好,下载过程不要中断。
3.2 安装步骤与关键选项
Windows下双击.exe安装包,会进入Setup向导。有几个勾选项需要特别注意。
“Create Desktop Shortcut”建议勾选,方便日后启动。“Update PATH variable”选项建议勾选,它会自动把IDEA的启动命令加入系统Path,方便你在命令行中直接输入idea唤起IDE,对于以后要使用命令行工具的场景很有帮助。“Add 'Open Folder as Project'”也建议勾选,这是一个右键集成,可以在文件夹上直接右键用IDEA打开。
安装目录同样建议保持默认,除非C盘空间紧张,否则不用改。整个安装过程是纯图形化界面,一路Next即可。
3.3 首次启动:主题选择与插件配置
安装完成后第一次启动IDEA,会进入一个初始化向导。首先会让你选择主题颜色:Darcula(深色)或IntelliJ Light(浅色)。这个完全是个人偏好,深色护眼、浅色清爽,我日常使用深色为主,你可以按自己喜好来。
接着是插件安装界面。此时不建议安装任何插件,保持默认直接Start即可。很多新手看到插件列表会手痒装一堆,结果把IDE搞得卡顿,还容易出现配置文件冲突。等以后确实有需要时(比如Lombok、MyBatisX),在IDEA内部的插件市场按需安装即可。
启动完成后,还有一步可能让新手困惑的界面:一个写有多个项目的欢迎页。此时先不要新建项目,先把IDEA的编码设置调整好。进入“File” -> “Settings”(Windows)或“IntelliJ IDEA” -> “Settings”(macOS),在“Editor” -> “File Encodings”界面,将Global Encoding、Project Encoding、Properties Files的编码格式全部设为UTF-8。没有这一步,将来代码里的中文注释很容易乱码。
3.4 在IDEA中配置JDK
打开“File” -> “Project Structure”(快捷键Ctrl+Alt+Shift+S),在“Project”选项卡下找到“SDK”下拉框。如果IDEA已经自动检测到安装好的JDK,下拉框里会有对应版本;如果没有,点击“Add JDK”手动选择JDK安装目录(就是刚才安装JDK的路径,例如C:\Program Files\Java\jdk-17)。
这里有一个容易踩的坑:如果你在安装JDK时没有配置JAVA_HOME,或者Path配置有问题,IDEA的自动检测就会失败,下拉框只有灰色提示。所以前面环境变量配置一定要做扎实,这不仅是命令行能用java命令的问题,IDEA也会读取系统环境变量来寻找JDK。
4. 创建第一个Java项目并验证环境
4.1 新建项目的完整流程
在IDEA欢迎页点击“New Project”,进入创建向导。这一步有几个设置需要正确填写。第一,“Name”填项目名称,比如HelloWorld。第二,“Location”是项目保存路径,建议放在一个专门的目录下,比如D:\JavaProjects,路径中不要带中文和空格。第三,也是最重要的,Project SDK下拉框选择你安装的JDK版本,比如17。第四,在“Additional Libraries and Frameworks”中,保持默认不勾选Spring等框架,纯Java入门阶段不需要任何额外框架。最后点击“Create”即可。
创建完成后,IDEA会打开主界面并自动生成项目结构。左侧的项目面板里,有一个src目录,这是存放Java源码的地方。日常练习的代码就放在这里,这个约定不要破坏。
4.2 手写Hello World并运行
在src目录上右键 -> New -> Java Class,输入类名HelloWorld。注意类名必须和文件名一致,首字母大写,这是Java规范,IDEA也会用黄色波浪线提示你。创建完成后,编辑区会出现一个空的类定义,输入main方法的三行代码:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Java!"); } }代码解释一下:public class HelloWorld定义一个公开类,public static void main(String[] args)是Java程序的入口方法,JVM会从这里开始执行程序。System.out.println是标准输出语句,会在控制台打印后面的字符串。
写完代码后,点击右上角的绿色三角形按钮运行,或者右键编辑区选择“Run 'HelloWorld.main()'”,IDEA会在底部打开控制台面板,输出Hello, Java!。看到这行输出,你的整个环境就完全打通了。
4.3 为什么建议用IDEA的快捷键体系
IDEA存在非常成熟的快捷键体系,从入门第一天就养成习惯,获益极大。main方法可以输入psvm后回车自动补全,System.out.println可以输入sout后回车自动补全。格式化代码用Ctrl+Alt+L(Windows)或Cmd+Alt+L(macOS)。查找文件用双击Shift。重命名变量用Shift+F6。
有人说记快捷键是花架子,实际这是错的想法。IDEA的快捷键不只是提速,更重要的是让写代码的过程流畅。你想想,如果每写一句就得停下来摸鼠标、找菜单、点按钮,心流状态很容易被打断。入门阶段就把这几个高频快捷键记住,后面写项目时非常舒服。
5. 常见报错与排查技巧
5.1 环境变量配置失败
现象:打开命令行输入java -version,提示“不是内部或外部命令,也不是可运行的程序或批处理文件”。
排查思路非常固定。第一步,确认JAVA_HOME是否创建成功且路径正确,可以在命令行输入echo %JAVA_HOME%看看输出是否指向JDK目录。如果输出为空,说明JAVA_HOME没配好。第二步,确认Path里是否包含%JAVA_HOME%\bin。第三步,确认这些配置是不是在“系统变量”下完成的,而不是在“用户变量”下修改后忘了点确定。
一个很常见的细节:修改完环境变量后,已经打开的CMD窗口不会生效,必须重新打开一个。如果还是不行,干脆注销Windows或重启一次,一次性解决环境变量缓存问题。另外要注意,Path变量里不要写死JDK的具体路径,比如C:\Program Files\Java\jdk-17\bin,如果你以后切换到JDK 21,还得回来改Path;用%JAVA_HOME%\bin这种引用方式,以后升级只管改JAVA_HOME就行。
5.2 cmd能找到java但IDEA找不到JDK
这种情况很诡异,命令行里java -version正常,但IDEA里创建项目时SDK下拉框还是空。核心原因通常是环境变量是在你已经有命令行窗口打开之后才配置的,命令行窗口重新打开后生效了,但IDEA是环境变量配置前启动的,它缓存了旧环境变量。
解决办法很简单:完全退出IDEA,重启(不是关闭项目,而是退出整个应用),IDEA重启时会重新读取系统环境变量。如果问题还存在,检查IDEA安装版本是否为32位,现代JDK 17只提供64位版本,32位IDE无法识别。
5.3 IDEA启动闪退或崩溃
刚装好IDEA,启动后还没进入欢迎页就闪退了,这个问题通常不是JDK导致的,而是IDEA自身的配置损坏或内存参数不合理。删除IDEA配置目录后重启是立竿见影的办法。
Windows下IDEA的配置目录在C:\Users\你的用户名\AppData\Roaming\JetBrains\IntelliJIdea2023.x,macOS在~/Library/Application Support/JetBrains/IntelliJIdea2023.x。将这个目录改名(比如加一个.bak后缀),再重新启动IDEA,它会自动生成一份全新配置。如果启动正常了,就是你之前调错了什么配置;如果还是闪退,再考虑卸载重装。
5.4 中文乱码问题
运行程序后控制台输出的中文变成乱码,几乎都是编码不统一造成的。Windows系统控制台默认使用GBK编码,而IDEA里代码文件用UTF-8编码,两者不一致就会出现乱码。
解决办法在IDEA中操作:打开“Help” -> “Edit Custom VM Options”,在文件中追加一行-Dfile.encoding=UTF-8,保存后重启IDEA。同时在“Settings” -> “Editor” -> “File Encodings”中把三项都设为UTF-8。最后在“Run” -> “Edit Configurations”中,为当前运行配置的“VM options”一项加上-Dfile.encoding=UTF-8。这样三重保证下,中文控制台输出基本不会再乱码。
5.5 常见错误速查表
| 错误现象 | 最可能原因 | 快速解决 |
|---|---|---|
| 命令行找不到java命令 | Path未配置或配置错误 | 重新配置%JAVA_HOME%\bin |
| 命令行找不到javac命令 | JDK不是标准安装包 | 用官方MSI安装包重装JDK |
| 输入java -version提示JAVA_HOME失效 | JAVA_HOME路径错误或指向不存在的目录 | 检查JAVA_HOME的值并修正 |
| IDEA新建项目SDK下拉框为空 | 环境变量未生效 | 重启IDEA或重启电脑 |
| 运行时报“错误: 找不到或无法加载主类” | 运行配置错误或JDK版本不匹配 | 点菜单“Build” -> “Rebuild Project” |
| 控制台中文乱码 | Encoding编码不统一 | 按上文编码三件套操作 |
| IDEA启动闪退 | 配置损坏 | 删除配置目录或用Toolbox重装 |
| 编译时报“非法字符: '\ufeff'” | 文件用带BOM的UTF-8保存 | 用IDEA转换文件编码为UTF-8无BOM |
最后分享一个我自己的习惯:每次配完环境,我会在一个固定的测试目录下,故意写一个带中文注释和中文输出的简单程序,跑一遍确认编码正常。这一步看似多此一举,却能提前暴露环境里的隐性坑,免得以后写大项目时被中文注释乱码折磨。环境配置真的不难,难的是耐心和一点点排查思路。按照这个流程走完一遍,以后无论在什么机器上,配Java开发环境都是十分钟的事。