ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

IDEA 新建 Java 项目:JDK、SDK 与运行配置入门

IDEA 新建 Java 项目:JDK、SDK 与运行配置入门 1. 先把工具链和版本这件事定下来很多人第一次接触 IntelliJ IDEA是被最聪明的 Java 集成开发环境这句话吸引过来的实际打开之后发现光是建个项目就卡住了菜单看不懂、SDK 不知道填什么、建完目录里空空荡荡没有 src。我自己当年也是这么过来的新建项目这个动作看起来只有三步但每一步背后都藏着一个需要理解的概念。这篇内容就是把这套流程从头到尾拆开讲清楚包括工具选型的取舍、新建项目向导里每个选项的含义、src 目录为什么有时不出现、第一个类怎么敲、怎么跑起来、跑不起来怎么查。适合完全没碰过 IDEA 的初学者也适合装了软件但一直没跑通第一个程序的人。1.1 社区版和旗舰版的选型逻辑IDEA 有两个主要发行版本一个是免费的 Community Edition一个是收费的 Ultimate Edition。新手最常问的就是我该装哪个。判断标准其实很简单你现阶段写不写 Web 后端和企业级框架。社区版覆盖了纯 Java SE 开发需要的全部能力包括代码补全、重构、调试器、单元测试、Maven 和 Gradle 基础支持。旗舰版额外支持 Spring 全家桶、Java EE、数据库工具、前端框架、远程部署这些企业开发里高频使用的东西。如果你现在的目标是把第一个 Java 程序跑起来、刷算法题、学 Java 基础语法社区版完全够用而且它是免费开源的用起来没有任何心理负担。我个人的建议是分阶段处理。学习基础语法阶段就用社区版功能边界清晰界面干净不会有一堆你用不到的按钮干扰视线。等到真的开始做 Web 项目、需要 Spring Boot 的配置提示和数据库连接工具的时候再考虑升级。学生和教师可以走官方的教育授权申请流程这是官方明确提供的正规渠道别去折腾那些来源不明的第三方方案装了一堆东西不说还可能把开发环境搞坏得不偿失。1.2 JDK 的准备与版本选择IDEA 本身只是编辑器加工具链它自己不包含 Java 运行环境。你得先装 JDKIDEA 才能编译和运行你的代码。这件事必须先做顺序不能反。JDK 版本怎么选我给一个直接可用的结论优先选 LTS 长期支持版本。目前主流可选的是 8、11、17、21 这几个。8 是最老的很多老项目还在用但语法特性少17 和 21 是近几年的主力语法现代、生态完整新项目基本都往这两个靠。如果你没有任何历史包袱直接从 17 或 21 起步学到的语法特性能跟得上现在的招聘要求。安装路径建议不要放在带空格或中文的目录里比如C:\Program Files\Java\jdk-17这种带空格的路径虽然现在大部分工具都能处理但在某些构建脚本里仍然是踩坑高发区。我会习惯性装到D:\dev\jdk17这种干净路径下。环境变量这块JAVA_HOME 指向 JDK 根目录Path 里加上%JAVA_HOME%\bin。配置完之后开个新的命令行窗口敲java -version和javac -version两条命令都能正常输出且版本号一致说明装好了。注意一定要开新窗口旧窗口读的是缓存的环境变量改了也不生效这个细节每年都有人栽。注意JDK 安装目录和 IDEA 里配置的 SDK 路径必须指向同一个目录。有的机器上装了好几个版本的 JDK搞混之后会出现命令行里能编译IDEA 里报错这种诡异现象。2. 新建项目向导里每个选项都在决定什么装好 IDEA 和 JDK接下来就是新建项目。这一步是整个流程里信息密度最高的地方因为向导里的每个下拉框都对应着一个真实存在的概念。我见过太多人在这里闭着眼睛一路 Next然后面对一个跑不起来的项目完全不知道问题出在哪。2.1 打开新建项目向导的正确入口启动 IDEA欢迎界面会有 New Project 按钮如果已经打开了某个项目入口在顶部菜单 File → New → Project。两个入口指向的是同一个向导功能没有区别。向导打开后左侧会列出项目类型Java、Kotlin、Spring、Maven、Gradle、Empty Project 等等。对于第一个程序直接选最上面的 Java 就行。这里的选项决定了 IDEA 帮你预置哪些配置文件选错了后面要手工补比较麻烦。右侧的字段逐个拆解Name是项目名称。不要用中文不要用空格习惯上用小驼峰或者短横线连接比如hello-java、firstDemo。项目名会直接变成磁盘上的文件夹名字中文名在某些构建工具和命令行场景里会出问题。Location是项目存放路径。同样避开中文路径和带空格的路径。我会专门建一个D:\workspace目录来放所有练习项目好处是以后备份、清理都方便也不用担心系统盘被项目文件堆满。Language保持 Java。Build system有三个可选IntelliJ、Maven、Gradle。这里是最容易踩坑的地方。选 IntelliJ 表示使用 IDEA 自带的原生构建方式不生成任何额外的配置文件适合写小练习和单文件程序选 Maven 或 Gradle 会自动生成pom.xml或build.gradle适合需要引入第三方库的项目。第一个程序建议选 IntelliJ理由是最少的干扰因素能把新建项目这件事本身看清楚。JDK下拉框要指向你刚装好的那个 JDK。如果下拉是空的点 Add SDK → Download JDK 可以走官方下载或者点 Add SDK → 手动指定本地 JDK 目录。这里显示的是 SDK 名称加版本号确认版本和你装的一致。2.2 深入 Advanced Settings 里的两个关键设置新版 IDEA 的向导里有 Add sample code 复选框和 Advanced Settings 折叠区这两个地方直接决定了项目建完之后目录里有没有东西。Add sample code 勾上之后IDEA 会自动帮你生成一个Main.java里面带着 main 方法。对第一次上手的人来说勾上它能立刻看到一个能跑的完整例子省去很多困惑。但我的建议是第一遍先勾上跑通第二遍再取消勾选自己从头敲。这样你能同时获得成功的正反馈和手工创建文件的完整经验两个都得有。Advanced Settings 展开后有这么几项设置项含义建议值Module name模块名默认跟项目名一致即可Base package基础包名空着或填域名倒序Add sample code生成示例代码第一遍勾选Create Git repository初始化 Git 仓库学习阶段可以不勾Base package这一项很多人直接跳过导致后面所有类都堆在默认包里。Java 的规范是包名用域名倒序全小写比如公司域名是example.com包名就是com.example。你如果只是练手没有域名用com.demo或者干脆留空都行。但要知道默认包default package里的类是不能被其他包引用的这是 Java 语言层面的限制不是 IDEA 的问题。养成分包习惯从第一个类开始。2.3 项目建好之后src 目录去哪了这是新手提问率最高的问题新建项目之后没有 src 目录。先解释 src 是什么。src 是 source 的缩写叫源码根目录是 IDEA 用来标记这个文件夹里的东西是需要被编译的 Java 源码的地方。它不是 Java 语言规定的而是 IDEA 的项目模型概念。IDEA 里有个东西叫 Sources Root被标记为 Sources Root 的文件夹会显示成蓝色编译器才会去里面找.java文件。那为什么有时候看不到 src常见原因有这几个第一种你在向导里选的是 Empty Project。空项目只给你创建一个目录容器什么都不生成自然没有 src。解决方式是在项目根目录上右键 → New → Directory输入src然后再右键src→ Mark Directory as → Sources Root图标变蓝就对了。第二种构建系统选了 Maven 或 Gradle但项目还没完成索引或同步。Maven 项目的标准结构是src/main/java和src/test/java比纯 Java 项目多两层目录。如果只看到src下面是main别慌继续展开java目录在里面。有时候 IDEA 右下角会弹一个 Load Maven Project 的提示点一下让它同步完目录结构才会正确显示。第三种文件被折叠了。IDEA 的项目视图有个 Compact Middle Packages 选项会把com.demo这种包名折叠成一行显示。这会让目录树看起来比实际少一层容易误判。如果觉得别扭点项目视图右上角的齿轮图标取消勾选 Compact Middle Packages。提示判断一个目录是不是源码根目录看颜色就行。蓝色是 Sources Root绿色是 Test Sources Root灰色是普通目录。颜色不对编译器就找不到你的文件。3. 写第一个类从创建文件到敲完 main 方法项目结构理清楚之后就可以写代码了。这一步的目标很明确创建一个符合 Java 语法规范的主类让它能编译、能运行、能输出一行文字。3.1 包、类、文件的命名关系先厘清三者的关系这是 Java 里最基础也最容易被忽略的规则。包package是命名空间用来避免类名冲突同时对应磁盘上的目录层级。com.demo这个包在磁盘上就是com/demo/两级目录。类class是代码的组织单位一个.java文件里可以写多个类。文件名必须和文件里的public类名完全一致包括大小写。public class HelloWorld必须写在HelloWorld.java文件里。如果文件名是helloworld.java编译直接报错。具体操作在蓝色的src目录上右键 → New → Package输入包名com.demo。然后在com.demo这个包上右键 → New → Java Class输入HelloWorld回车。注意新建对话框里有个选项是 Class、Interface、Enum、Record默认就是 Class不用改。IDEA 会自动在新文件第一行生成package com.demo;这句声明。这句话的作用是告诉编译器我属于哪个包不要手动删掉删了之后 IDEA 会标红编译也会出问题。3.2 main 方法和输出语句的输入技巧一个能被直接运行的 Java 类必须有一个特定签名的入口方法public static void main(String[] args) { System.out.println(Hello, Java!); }这个签名里的每个部分都有实际含义不是死记硬背的咒语。public表示这个方法对外可见Java 虚拟机要从外部调用它不可见就调不到static表示它是类级别的方法不需要先创建对象就能调用虚拟机启动时还没对象可创建void表示没有返回值String[] args是命令行参数的接收容器虽然现在用不到但签名不能少。手敲这一大段确实烦IDEA 提供了几个缩写模板在类体里输入psvm按 Tab 或回车自动展开成完整的 main 方法签名输入sout按 Tab自动展开成System.out.println();输入fori展开成 for 循环输入.var在变量后面输入自动补全变量声明这几个缩写的展开效果可以在 Settings → Editor → Live Templates 里查看和自定义。我个人的习惯是psvm和sout两个必用fori看情况其他用得少。写完之后整段代码应该是这样package com.demo; public class HelloWorld { public static void main(String[] args) { System.out.println(Hello, Java!); } }IDE 右边界会有一条竖线提示行宽一般默认 120 字符。代码超长了实际也不影响编译但保持适当的换行习惯对后续阅读有好处。3.3 编译和运行的差别别混为一谈这里要插一个概念因为很多报错都源于把这两件事搞混。编译是把.java源文件翻译成.class字节码文件的过程由javac完成。编译期能发现的错误叫编译错误比如少写分号、类型不匹配、类名和文件名不一致。运行是让 Java 虚拟机加载.class文件并执行 main 方法的过程由java命令完成。运行期才会暴露的错误叫运行时异常比如数组越界、空指针。IDEA 在点击运行按钮时会先自动触发一次编译编译成功才执行。所以你看到报错时第一件事是判断这个错是在哪个阶段发生的。IDEA 底部有个 Build 工具窗口编译的输出信息都在里面运行时的输出在 Run 窗口里。两个窗口分开看定位问题的速度会快很多。4. 运行起来运行配置和输出结果代码写完了点绿色三角就能跑。但按钮背后发生了什么值得搞清楚因为一旦跑不起来排查思路全在这里。4.1 Run Configuration 是什么IDEA 每次运行一个类都会为它创建一份运行配置Run Configuration。这份配置记录了几件事运行哪个类、用哪个 JDK、工作目录在哪、虚拟机参数是什么、传入什么命令行参数。创建方式有三种点击 main 方法左边行号栏的绿色三角会自动创建并运行右键编辑器里的类文件选 Run HelloWorld.main()或者在顶部工具栏的配置下拉框里点 Edit Configurations 手动新建。自动创建的配置保存在项目目录下的.idea/runConfigurations或者工作区的.idea/workspace.xml里。这就是为什么有时候换了台机器或者删了.idea目录运行按钮的配置就消失了的缘故。.idea目录是 IDEA 的项目配置目录里面有编码设置、模块信息、运行配置等团队协作时一般会把其中一部分加入版本控制另一部分如workspace.xml排除掉因为里面存的是个人偏好。运行配置里的 Use classpath of module 这一项指定了运行时用哪个模块的 classpath。单模块项目永远是那一个多模块项目里如果选错了模块会出现找不到主类或者找不到依赖的类这类问题。启动类旁边的下拉框如果有多个主类会同时列出多个配置。切换运行目标的时候注意看清楚选的是哪个这个细节出错率挺高。4.2 控制台输出与编码问题处理运行成功后底部 Run 窗口会打印Hello, Java! Process finished with exit code 0exit code 0表示程序正常结束。非 0 就是异常退出了具体的异常堆栈会在上面几行显示出来。如果输出的是乱码说明编码设置不一致。处理路径分三层第一层是源文件编码。Settings → Editor → File Encodings把 Global Encoding、Project Encoding、Default encoding for properties files 三项全部设为 UTF-8并勾选 Transparent native-to-ascii conversion。第二层是编译时的编码。有些项目在pom.xml或build.gradle里单独指定了编码格式跟 IDEA 的设置冲突这时以构建文件里的为准。第三层是运行时的编码。可以在 Run Configuration 的 VM options 里加一行-Dfile.encodingUTF-8如果每次新建配置都要加很烦可以在 Help → Edit Custom VM Options 里给整个 IDEA 加上同样的参数一劳永逸。注意Windows 系统的默认控制台编码历史上是 GBK这跟 UTF-8 的源文件天然冲突。三层编码设置的核心原则是保持一致只要有一层掉队乱码就出现了。4.3 几个运行期常见报错的快速定位跑不起来的时候看报错的第一行最关键。整理几个高频的报错信息根因处理方式找不到或无法加载主类类没编译、包名不对、classpath 选错检查类的完整限定名、Rebuild 项目、确认运行配置的模块无效的源发行版Language level 和 JDK 版本不匹配Project Structure 里把 Language level 和 SDK 调成一致编码 GBK 的不可映射字符源文件含中文且编码设置不对统一设为 UTF-8重新编译找不到符号类没导入、拼写错误、依赖缺失检查 import 语句、AltEnter 快速修复错误需要 class、interface 或 enum类外面有多余内容、括号不配对检查花括号层级用 CtrlAltL 格式化代码这些报错百分之八十都跟配置相关跟你的代码逻辑关系不大。新手容易陷入我代码是不是写错了的自我怀疑其实先去 Project Structure 里核对一遍 SDK 和 Language level问题往往当场就解决了。5. Project Structure 里必须理解的三个标签页Project Structure 是 IDEA 里信息量最大的配置面板快捷键是 CtrlAltShiftS。里面有三个标签页跟新手直接相关不理解它们后面很多问题都会卡住。5.1 Project 标签页全局级别的版本约定Project 标签页管的是整个项目的默认约定三个字段Project name项目名改这里会同时改磁盘目录名的显示。Project SDK项目使用的 JDK。这个设置是项目级别的默认值模块如果没有单独指定就继承这里。Project language level语言级别决定了编译器允许使用哪些 Java 语法特性。这个字段是一堆人踩坑的重灾区你把 SDK 设成 JDK 21但 language level 还是默认的 8那么 switch 表达式、record、文本块这些新语法全部会标红。反过来SDK 是 8 但 level 设成 21编译时直接报无效的源发行版。我的习惯是每次新建项目都到这里看一眼确认 SDK 和 language level 的版本号对得上。这是十秒钟的动作能省掉后面半小时的排查。5.2 Modules 标签页源码目录和依赖Modules 标签页管的是模块级别的配置最常用的三个子页Sources子页显示模块的目录结构每个目录的分类用颜色区分。蓝色 Sources、绿色 Test Sources、黄色 Resources、橙色 Test Resources、灰色 Excluded。你可以在这里手工把某个目录标记成源码根目录也可以把编译输出目录通常叫out标记成 Excluded避免被误当成源码扫描。Dependencies子页列出模块依赖的所有内容包括 JDK、其他模块、第三方 jar 包。如果引入了外部库但在代码里引用不到第一件事就是来这里看 jar 包在不在列表里。Paths子页指定编译输出的位置。默认是项目根目录下的out/production/模块名。这个目录是编译器自动生成的不需要手动维护建议加进.gitignore。5.3 SDKs 标签页多个 JDK 的共存管理如果机器上装了多个 JDK 版本SDKs 标签页里会列出全部。每个条目显示名称、版本、路径。项目用哪个在 Project 标签页里指定就行随时可以切换。实际工作中经常遇到老项目要用 JDK 8新项目要用 JDK 17的情况。做法很简单两个 JDK 都装好都在 SDKs 里登记然后每个项目各自指定。IDEA 会按项目去调用对应的 JDK互不影响。这比来回改环境变量优雅太多。提示在 SDKs 里新增 JDK 时路径要选到 JDK 的根目录里面能看到bin、lib、jre这些文件夹不要选到bin里面去。选错层级 IDEA 会提示无效的 SDK 主目录。6. 几个我在实际使用中攒下来的操作习惯讲完流程分享一些纯经验层面的东西。这些在官方文档里基本找不到都是日常用出来才知道的。6.1 关于缓存和索引的那些事IDEA 会在项目目录里维护一套索引用来支撑代码补全、跳转、重构这些功能。索引正常的时候一切都好索引损坏的时候会出现各种匪夷所思的现象明明代码是对的满屏红波浪线明明删掉了的类补全里还能搜到。遇到这种情况走 File → Invalidate Caches / Restart选 Invalidate and Restart。IDEA 会清空索引并重启重启后会重新扫描项目。整个过程视项目大小从几十秒到几分钟不等。这个操作我大概每两三个月会主动做一次或者在大版本升级之后做一次能规避掉很多莫名其妙的问题。还有一个细节不要在 IDEA 正在扫描索引的时候去改目录结构或者删文件索引和实际文件不同步的几率会明显上升。底部状态栏有个进度条在动的时候稍微等一等。6.2 值得早点养成的三个键位习惯格式化代码CtrlAltL。写完一段代码顺手按一下缩进、空格、换行全给你排整齐。格式统一之后代码的可读性提升非常明显而且这个习惯越早养成越好等到写了几千行再回头调格式成本高得多。快速修复AltEnter。光标停在红色的地方按这个IDEA 会给出修复建议包括导入缺失的包、添加类型转换、生成方法等等。新手判断这个报错该怎么修最有效的办法就是先按一下 AltEnter 看它建议什么看多了自然就有感觉了。全局搜索类CtrlNWindows/Linux。输入类名的一部分就能跳转支持模糊匹配。项目大了之后靠目录树一层层展开找类效率太低用搜索是主流做法。对应的还有 CtrlShiftN 搜文件、CtrlShiftF 全局搜内容。这几个键位组合不用刻意背找个空闲的下午把每个键按二十遍形成肌肉记忆之后就是纯收益了。6.3 项目跑通之后的下一步练习方向第一个程序跑起来了说明工具链的闭环打通了这是个很有意义的节点。往后走的路我给一个参考顺序先把基础语法过一轮变量、运算、分支、循环、数组、方法。每学一个知识点就在 IDEA 里写个小类验证一遍不要只看看就过去。然后是面向对象部分类、对象、继承、多态、接口、抽象类这部分是 Java 的核心也是面试里占比最高的板块。集合框架List、Map、Set、异常处理、IO 流、多线程这几个按顺序往上叠。练习的题目不用一开始就找复杂的冒泡排序、字符串反转、斐波那契数列、九九乘法表这种小而完整的问题反而是最能练手感的。写完之后不要满足于结果对了再想一层这段代码如果输入是空的会怎样如果数据量到一百万条性能上有没有问题。这种自我追问的习惯是区分会写和写得好的分水岭。另外提一句IDEA 里跑单个类很方便但如果你想练习写多个类互相配合就需要注意包的组织。一开始不需要设计得很完美先把类分门别类地放到不同的包里哪怕包名起得不够讲究也比全部堆在默认包里强。等到你开始接触到实际项目会发现包结构的设计本身就是一个值得琢磨的问题早一点建立这个意识没有坏处。最后说一个我觉得挺重要的心态问题。新建项目、配置 SDK、解决编码问题这一整套动作第一次做会觉得很琐碎甚至有点烦。但这些恰恰是真实开发里每天都要面对的东西配置环境的熟练度直接决定你进入编码状态的速度。我见过不止一个人语法学得挺扎实一到新机器上配环境就卡半天。把今天这套流程反复走三遍第三遍的时候你会发现大部分操作已经变成下意识的动作了这个熟练度是练出来的没有捷径。
返回列表