news 2026/9/29 3:01:55

Java开发环境搭建:JDK 17安装、IDEA社区版配置与Maven接入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java开发环境搭建:JDK 17安装、IDEA社区版配置与Maven接入

1. 装之前先想明白:这套环境到底解决什么问题

1.1 为什么新手的第一道坎总是 JDK 和 IDEA

Java 入门的路径其实很清晰:装 JDK(Java 开发工具包),装一个顺手的编辑器或者 IDE,然后写下第一行System.out.println("hello")。听起来就两步,实际动手的时候,很多人会在这两步上耗掉一整个下午。原因不复杂——JDK 是装在操作系统层面的东西,它需要被系统"认识",也就是环境变量得配对;而 IDEA 是一个需要反过来去"找到"JDK 的工具,两边任意一边没对齐,打开项目就是满屏红字,控制台报找不到或无法加载主类,新手看到这种反馈基本就懵了。

我在带新人、帮同事排障的过程中,同一类问题重复遇到不下几十次:java -version能跑但javac说不是内部命令;IDEA 里建了项目却提示Project SDK is not defined;装完 JDK 17 之后旧项目编译不过。这些问题本身都不难,难的是没有人一开始告诉你哪一步不能省、哪个顺序不能反。

所以这篇内容的目标很明确:把 JDK 和 IDEA 的安装配置拆成一条可以照着走的流水线,每一步说清楚在做什么、为什么这么做、做错了会出什么现象。全程走免费路线——JDK 用开源发行版,IDEA 用官方免费提供的社区版,不需要任何额外授权就能长期使用。无论你是刚转行学 Java 的零基础,还是换新电脑要重装环境的在职开发,这份流程都能直接用。

1.2 版本选择的取舍:8、17、21 到底挑哪个

选版本这件事,比安装本身更值得花五分钟想清楚。JDK 的发布节奏是每半年一个功能版本,每两年左右出一个长期支持版本(LTS)。非 LTS 版本支持周期只有半年,拿来学习可以,拿去写生产项目就是给自己埋雷。所以结论很简单:只考虑 LTS,也就是 8、11、17、21 这四个。

版本类型当前定位建议使用场景
JDK 8LTS老项目主力,大量存量系统仍在用维护公司遗留系统、面试准备、老框架学习
JDK 11LTS过渡版本,新项目已较少选择已有系统升级路径上的中间态
JDK 17LTS目前生态兼容性最稳的现代版本新项目首选,Spring Boot 3 的最低要求
JDK 21LTS引入了虚拟线程等新特性想尝鲜新特性、对并发有要求的项目

我个人的建议是:新机器直接上 JDK 17,同时把 JDK 8 也装一个备用。原因在于 Spring Boot 3.x 明确要求 JDK 17 起步,而市面上还有大量教程、老项目、第三方 SDK 是按 JDK 8 写的。两个版本共存不会打架,只要环境变量指向其中一个,另一个随时可以通过切换变量来启用,这部分操作我在第 2.4 节会给出具体做法。

还有一个常见误区:有人觉得"装最新的肯定最好",于是选了 JDK 21 甚至非 LTS 的版本,结果跑老项目时遇到反射相关模块被限制、某些依赖库还没适配,报一堆InaccessibleObjectException,最后又折腾着降级。稳定优先于新,这是装环境的第一原则。

1.3 IDEA 的两个版本:社区版和旗舰版差别在哪

IntelliJ IDEA 有两个发行版本,很多人在下载页面上就卡住了。社区版(Community Edition)是免费开源的,旗舰版(Ultimate)是付费的商业版本。两者的差别集中在功能覆盖面上,而不是"能不能写代码"。

社区版支持纯 Java、Kotlin、Groovy 开发,内置 Maven、Gradle 构建工具,Git 版本控制、断点调试、代码重构、单元测试这些核心能力一个不少。缺点是缺少 Spring 全家桶的专项支持、没有内置数据库工具窗口、没有 HTTP Client、没有前端框架支持、也不能直接配置 Tomcat 之类的应用服务器。

旗舰版把这些企业级开发常用的功能都集成进来了。官方的获取途径是订阅付费,另外学生和教师可以通过教育邮箱申请免费授权,开源项目的维护者也可以申请,此外还有 30 天的完整功能试用期。这些都属于官方提供的正规渠道。

对于刚开始学 Java 语法、写算法题、做课程设计的人来说,社区版完全够用,而且它长期免费,不存在到期的问题。等你真正进入需要 Spring 生态的工作场景,再根据公司情况选择旗舰版也不迟。这篇后面的配置内容以社区版为主,旗舰版的操作路径基本一致。


2. JDK 安装全流程:从下载到验证一次跑通

2.1 下载渠道怎么选:官方站还是国内镜像

Oracle 官网上可以下载到 Oracle JDK,但要注意它从 JDK 17 开始采用的是 NFTC 许可,个人学习和开发可以用,商用场景有额外的授权要求。为了避免踩到许可的坑,我一般推荐用开源发行版,它们本质上都是基于 OpenJDK 源码构建的,功能上没有区别,许可也更宽松。

常见的几个选择:

  • Eclipse Temurin(原名 AdoptOpenJDK),社区维护,覆盖面广,是目前最主流的中立选择
  • Amazon Corretto,亚马逊维护,长期免费,更新及时
  • Azul Zulu,对多平台支持很好,Mac 的 M 系列芯片适配早
  • Alibaba Dragonwell,阿里维护,针对国内场景做过一些优化

下载速度是个现实问题。从国外站点直接拉安装包,几十兆的文件有时候要等十几分钟甚至断连。这时候可以走国内的开源镜像站,清华 TUNA、华为云、腾讯云、阿里云都提供 OpenJDK 发行版的镜像同步,选择对应的发行版和版本号,下载速度通常能跑满带宽。

注意:下载时认准文件类型。Windows 下.msi是安装包,.zip是免安装压缩包;macOS 下.dmg是图形化安装,.tar.gz是手动解压;Linux 下多数情况用.tar.gz。选错类型会在后面的配置步骤里产生完全不同的操作路径。

另外一定要核对版本号里的架构信息。现在的笔记本有 x64 和 ARM64 两种,Mac 的 M1/M2/M3 芯片必须选aarch64或arm64版本,选错了装上去跑不起来或者性能打折。

2.2 Windows 下的安装与环境变量配置

Windows 是最容易出问题的平台,因为环境变量的配置完全靠手动。我按顺序说。

第一步,运行安装包。安装向导里会让你选安装目录,默认路径通常是C:\Program Files\Java\jdk-17这类。如果你想改成D:\dev\jdk-17也完全可以,但有两个硬性要求:路径里不能有中文,不能有空格。这两条不是洁癖,是因为后续很多构建工具、脚本在处理路径空格时会出现截断,报错信息还特别难看懂。

第二步,配置JAVA_HOME。打开"此电脑"右键 → 属性 → 高级系统设置 → 环境变量。在"系统变量"区域点新建:

变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk-17

这里的变量值就是第一步的安装目录,不要写到bin目录,这是最常见的错误之一。JAVA_HOME指向的是 JDK 的根目录,很多工具(Maven、Gradle、Tomcat)都依赖这个变量去反推bin、lib的位置。

第三步,把bin目录加进Path。在系统变量里找到Path,点编辑,新增一行:

%JAVA_HOME%\bin

用%JAVA_HOME%这种引用写法而不是写死绝对路径,好处是将来换 JDK 版本时只需要改JAVA_HOME一个地方,Path不用动。

第四步,关于CLASSPATH。网上大量老教程会让你配置CLASSPATH,值写成.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。这个步骤在现代 JDK 上完全不需要,配错了反而会导致类加载异常。那些教程是 JDK 5 时代的产物,照抄下来纯属给自己添麻烦。

2.3 macOS 和 Linux 的安装方式

macOS 相对省心。下载.dmg双击安装后,JDK 会被放到/Library/Java/JavaVirtualMachines/目录下,系统自动就能识别,不需要手工配环境变量。验证的时候用一个很方便的命令:

/usr/libexec/java_home -V

它会列出机器上所有已安装的 JDK 及其版本和路径。如果你想切换默认版本,可以在~/.zshrc里加一行:

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

这样每次打开终端,JAVA_HOME就自动指向 17。想临时切到 8,把-v 17改成-v 1.8再source ~/.zshrc即可。

如果你习惯用包管理器,Homebrew 也是一条路:

brew install --cask temurin@17

Linux 服务器上多数情况下没有图形界面,走压缩包手动解压更合适:

sudo mkdir -p /usr/local/java sudo tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java/

解压完成后,在/etc/profile.d/下新建一个jdk.sh,内容如下:

export JAVA_HOME=/usr/local/java/jdk-17 export PATH=$JAVA_HOME/bin:$PATH

然后在~/.bashrc或~/.bash_profile里 source 一下,重新登录终端就生效了。把配置拆到/etc/profile.d/下的独立文件里,而不是直接堆在/etc/profile里面,好处是将来卸载或者换版本时只需要删掉一个文件,不会污染主配置文件。

2.4 验证安装与多版本共存切换

配置完一定要验证,而且是两个命令都验证:

java -version javac -version

java是运行命令,javac是编译命令,两者来自同一个bin目录。如果只有java能用而javac报"不是内部或外部命令",八成是你装的是 JRE 而不是 JDK,或者 Path 配错了。这是个高频现象,很多人下载时没看清文件名里的jre和jdk。

再看一下JAVA_HOME有没有生效:

# Windows echo %JAVA_HOME% # macOS / Linux echo $JAVA_HOME

关于多版本共存,我的做法是在 Windows 上建两个变量:JAVA_HOME_8和JAVA_HOME_17,都填好各自的路径,然后把JAVA_HOME指向当前要用的那个,Path里统一写%JAVA_HOME%\bin。要切换的时候,只需要把JAVA_HOME的值改成%JAVA_HOME_17%或%JAVA_HOME_8%。这样切换成本极低,而且不容易漏改。

在 Linux 和 macOS 上还有个更优雅的方案,就是前面提到的alternatives(Linux)和java_home(macOS)。它们能在系统层面注册多个 JDK,切换时只改软链接,所有依赖JAVA_HOME的工具都会跟着变,不用逐个改配置。

实操心得:改完环境变量之后,一定要新开一个终端窗口再验证。已经打开的终端和已经启动的 IDEA 进程读取的还是旧的环境变量,这时候验证出来的结果必然是错的,白白浪费时间排查。


3. IDEA 安装与首次配置

3.1 安装包获取与安装路径的讲究

IDEA 的安装包从官网下载页获取,页面上会同时给出社区版和旗舰版的下载按钮。社区版的安装包比旗舰版小一些,因为不带那些企业级插件。下载时同样要注意选择正确的操作系统和芯片架构,Mac 用户尤其要看清楚 Intel 和 Apple Silicon 的区别。

安装过程本身没什么技术含量,一路下一步就行,但有两个地方值得停下来调整:

第一是安装路径。默认会装到C:\Program Files\JetBrains\...,如果你 C 盘空间紧张,可以改到其他盘。同样遵守"无中文、无空格"的规则。另外注意,IDEA 的安装目录和它的配置目录、缓存目录是分开的,配置和索引数据默认放在用户目录下的AppData\Roaming\JetBrains和AppData\Local\JetBrains。后两个目录体积会随着使用不断膨胀,几十 GB 都有可能,所以如果你的 C 盘本来就吃紧,最好在首次启动前就把这个位置调整好。

第二是安装选项。安装向导里会问要不要创建桌面快捷方式、要不要把 IDEA 加入右键菜单"Open Folder as Project"、要不要关联.java文件。我的建议是全勾上,尤其是右键菜单那一项,实际用起来很方便——看到某个目录想直接开项目,右键就行,不用先启动 IDEA 再走"打开"流程。

3.2 首次启动向导该怎么选

首次启动会走一个设置向导,这一步的选择会直接影响后续的体验,我逐项说。

导入设置这一步,如果你之前用过 IDEA 或者有导出的配置包,可以在这里导入,省去重新配置的麻烦。全新机器直接选不导入。

界面主题有两种:深色的 Darcula 和浅色的 Light。这个纯粹看个人习惯,我用了很多年深色,主要是长时间盯着屏幕眼睛舒服些。选了之后随时可以在设置里改,不用纠结。

插件选择这一步是重点。向导会推荐一批插件,包括各类框架支持、版本控制、终端工具等。对于社区版用户,这里建议只勾几项基础插件,其余全部跳过。原因有两个:一是向导里推荐的插件很多是旗舰版专属的,装了也用不了;二是首次启动时批量下载插件会让启动时间变得很长,而且如果网络不好还可能卡住。

授权方式这一步,社区版会直接跳过,因为它本身就是免费的。如果你装的是旗舰版,这里会要求登录账号或者输入授权信息,可以走官方提供的试用或授权渠道。

3.3 必做的几项全局设置

向导走完之后,先别急着建项目,有几项全局设置我强烈建议先改掉,不然用起来会各种别扭。

第一项是编码。路径是File → Settings → Editor → File Encodings,把Global Encoding、Project Encoding、Default encoding for properties files三项全部设成UTF-8,并且把下面的Transparent native-to-ascii conversion勾上。这一项不设置的话,中文注释、中文资源文件在编译后很容易变成乱码,而且这种问题往往在项目跑起来之后才暴露,排查起来很烦。

第二项是 Maven 配置。路径是File → Settings → Build, Execution, Deployment → Build Tools → Maven。IDEA 自带一个捆绑的 Maven,但那个版本通常比较旧,我一般改成本地安装的版本(如果有的话)。更重要的是下面的Local repository和settings.xml路径,指向自己配置的阿里云镜像文件,否则第一次拉依赖会慢到让人怀疑人生。

第三项是内存。IDEA 默认的最大堆内存通常在 2GB 左右,跑大项目时会频繁 GC,表现就是编辑器一顿一顿的,或者弹出"内存不足"的提示然后自动关闭。这个自动关闭的现象我在热词里也看到过很多人问,根本原因就在这里。修改方式是Help → Change Memory Settings,把Maximum Heap Size调到 4096 或者 8192,取决于你的物理内存。注意不要调得比物理内存还大,那样反而会因为频繁换页变得更卡。

第四项是自动保存和代码提示。File → Settings → Appearance & Behavior → System Settings里,把Save files on frame deactivation和Save files automatically勾上。这样切到浏览器看一下再切回来,代码就自动保存了,不用手动 Ctrl+S。代码提示方面,Editor → General → Code Completion里把Match case的勾去掉,这样输入小写也能匹配到大写的类名,写代码快不少。

3.4 插件安装建议

插件这个东西容易上瘾,但装太多会拖慢启动速度、增加内存占用。我自己的原则是:只装能实际减少重复劳动的那几个。

插件名解决什么问题是否必备
Translation看英文文档、报错信息时直接在编辑器里翻译推荐
Lombok减少 getter/setter 样板代码,需要配合依赖使用推荐
Key Promoter X鼠标操作时提示对应的快捷键,帮助形成肌肉记忆新手推荐
GitToolBox在代码行尾显示最近一次提交信息可选
Rainbow Brackets括号按层级着色,嵌套深的时候好定位可选
Alibaba Java Coding Guidelines静态扫描代码规范问题可选

安装路径是File → Settings → Plugins → Marketplace,搜索名字点安装,装完重启生效。要注意的是,Lombok 这类插件必须同时在项目的pom.xml里加上对应的依赖,光装插件是不够的,因为它本质上依赖注解处理器在编译期生成代码。

渠道方面,从 IDEA 内置的 Marketplace 安装是最省事的,它会自动处理版本兼容和更新。如果遇到网络问题下载不下来,也可以手动下载插件压缩包,走Install Plugin from Disk的方式安装。


4. 第一个 Java 项目跑起来

4.1 新建项目并绑定 SDK

配置做完之后,点New Project走一遍完整流程。左侧选择Java,顶部有两个关键设置。

Name是项目名,Location是项目存放位置。这里同样要注意路径不要带中文。JDK 那一栏,如果前面配置正确,下拉框里会自动列出检测到的 JDK 版本,选中一个即可。如果下拉框是空的,说明 IDEA 没有识别到,点Add SDK → JDK,然后手动指到你 JDK 的安装根目录。

如果你的下拉框里显示的是<No SDK>,那就是环境变量没生效。这时候最直接的排查方式是在 IDEA 的Terminal窗口里敲一下java -version。IDEA 的终端会继承系统的环境变量,如果这里能跑通而项目设置里识别不到,那就是 IDEA 自身的缓存问题,走File → Invalidate Caches清一下重启即可。

建完之后 IDEA 会自动生成src目录和一份Main类模板。项目根目录下还会有一个.idea文件夹,这里面存的是 IDEA 对这个项目的所有配置——SDK 版本、模块设置、运行配置等等。这个东西要不要提交到 Git,团队里一直有争论,我个人的做法是:单人项目和纯学习项目直接提交,多人协作项目把它加到.gitignore里,因为每个人的本地路径可能不一样,提交上去反而容易冲突。

4.2 目录结构与编码设置该怎么组织

新手最容易犯的错误是把所有 Java 文件都堆在src根目录下。虽然没有语法错误,但项目稍微大一点就没法看了。标准的做法是按包名分层,包的命名规则是从后往前的域名倒序,比如com.example.demo。在 IDEA 里新建包很简单,右键src→New → Package,输入com.example.demo即可。

真正让新手困惑的是:为什么我建了com.example.demo这个包,文件系统里却看到com → example → demo三个嵌套文件夹?这是因为 Java 的包机制和文件系统的目录结构是映射关系,点号代表层级,IDEA 只是把它显示成折叠的一行而已。你可以点项目视图右上角的齿轮图标,把Compact Middle Packages关掉,就能看到真实的目录层级。

编码方面,前面在全局设置里已经配了 UTF-8,但新建项目时还是建议再确认一下File → Settings → Editor → File Encodings。另外有一个项目级别的设置容易被忽略:Run/Debug Configurations里的 VM options,可以加上:

-Dfile.encoding=UTF-8

这一项的作用是确保 JVM 在运行时也使用 UTF-8,避免出现"IDE 里显示正常、运行时输出乱码"的情况。这个问题在 Windows 上尤其常见,因为 Windows 的默认编码长期是 GBK 系。

4.3 断点调试:比打印日志高效一百倍

写代码不可能一次就对,调试能力直接决定你解决问题的速度。新手最常用的手段是到处插System.out.println,这个方式在定位简单问题时够用,但遇到循环、递归、复杂对象结构时就力不从心了。断点调试值得花半小时学透。

基本操作:在代码行号左侧的空白区域点一下,会出现一个红点,这就是断点。然后点右上角的虫子图标(Debug)启动程序。程序跑到断点行会停下来,此时你可以:

  • Step Over(F8):执行当前行,不进入方法内部
  • Step Into(F7):进入当前行调用的方法内部
  • Step Out(Shift+F8):从当前方法跳出到调用它的地方
  • Resume(F9):继续执行到下一个断点

停下来的时候,Variables窗口会显示当前作用域内所有变量的值,鼠标悬停在代码里的变量上也能直接看到当前值。想临时计算某个表达式,选中它按Alt+F8,会弹出Evaluate Expression窗口,可以执行任意合法的 Java 代码,非常方便用来验证某个方法调用会返回什么。

进阶一点的是条件断点。比如你在一个循环里想只看i == 50那次的情况,可以右键断点点Edit Breakpoint,在Condition里写上i == 50。这样程序只会在条件满足时停下来,不用手动 F9 点五十次。这个技巧在处理大循环和集合遍历时能省下大量时间。

4.4 顺带把 Git 和 Maven 接上

环境搭好了,顺手把版本控制和构建工具也接上,后面会省很多事。

Git 这块,先去官网下载 Git 安装包装好,安装过程一路默认即可。装完之后配置一下身份信息,这两行命令必须在终端里执行一次:

git config --global user.name "你的名字" git config --global user.email "你的邮箱"

然后在 IDEA 里设置File → Settings → Version Control → Git,把Path to Git executable指向安装目录下的git.exe。IDEA 通常会自己检测到,如果那一行显示绿色的勾,说明配置成功。之后在项目里点Enable Version Control Integration,选择 Git,项目文件就会变色,表示已被纳入版本控制。

Maven 这块,重点是换镜像。默认的中央仓库在国外,拉一个 Spring Boot 项目可能要等十几分钟。找到 Maven 的conf/settings.xml,在<mirrors>标签里加上阿里云的镜像配置:

<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>

然后在 IDEA 的设置里把settings.xml路径指到这个文件。改完之后,新建项目时 IDEA 会自动走镜像下载依赖,速度差别是数量级的。如果改了之后还是慢,可以在 IDEA 的 Maven 工具栏里点一下Reload All Maven Projects,让它重新读取配置。

注意:如果你同时配置了多个镜像,mirrorOf写*的那个会覆盖所有仓库。所以除非你有特殊的私服需求,否则保留一个镜像就够了,配太多反而会导致某些依赖拉不到。


5. 常见问题排查速查

5.1 环境变量类报错怎么定位

这一类问题的特征是:在命令行里执行命令,系统告诉你"不是内部或外部命令,也不是可运行的程序"。看到这句话,基本可以确定是Path的问题。定位思路是分三步走。

第一步,确认JAVA_HOME是否正确。执行echo %JAVA_HOME%(Windows)或echo $JAVA_HOME(macOS/Linux),看输出的路径是不是你 JDK 的安装根目录。如果输出是一串%JAVA_HOME%本身,说明这个变量压根没建成功,或者建在了用户变量里而系统变量里没有。

第二步,确认Path里有没有加%JAVA_HOME%\bin。注意是bin目录,不是 JDK 根目录。这两个很容易搞混——根目录下没有java.exe,所以 Path 指向根目录是不起作用的。

第三步,确认有没有重启终端。这是一条极其常见但又极其容易被忽略的原因。环境变量的修改不会自动同步到已经打开的窗口,必须新开一个命令行窗口才会读到新值。我见过不止一个人在这一步上白白折腾半小时。

另外还有一种情况是java能用但javac不能用。这通常意味着系统里装了多个 Java 相关的程序,比如某个软件自带了 JRE 并把它的bin目录加进了 Path,而且排在前面。排查方式是执行where java(Windows)或which java,它会列出所有匹配的可执行文件路径,排在第一个的就是实际生效的那个。如果发现是别的软件带的 JRE,把那一条从 Path 里删掉或者调整顺序即可。

5.2 IDEA 自身的卡顿与异常

IDEA 用久了会变慢,这是正常现象,因为它需要为项目建立索引。但有些变慢是可以优化的。

索引反复重建是最典型的问题。表现是底部状态栏频繁出现Indexing,每次都卡很久。原因通常是项目里有大量不需要索引的文件,比如node_modules、构建输出目录target、日志目录。解决办法是在File → Settings → Project Structure → Modules里,把不需要的目录标记为Excluded,这样 IDEA 就会跳过它们。

启动特别慢,跟插件数量和堆内存配置都有关系。可以先用Help → Show Log in Explorer看一下启动日志,里面会记录每个阶段的耗时。如果发现卡在某个插件上,禁用掉就行。

编辑器突然卡死或者整个窗口自动消失,这基本就是内存问题。前面提过,改Maximum Heap Size可以解决。如果调大之后还是不行,就要看一下是不是某个插件有内存泄漏,可以通过禁用全部第三方插件再逐个启用排查。

乱码问题分两种。如果是编辑器里显示的注释是乱码,那是文件本身的编码和 IDEA 读取时用的编码不一致,可以在右下角的状态栏点一下当前编码,选择Reload in another encoding试试常见的几种。如果是运行时控制台输出的中文是乱码,那是 JVM 的默认编码问题,按前面说的加-Dfile.encoding=UTF-8参数即可。

5.3 版本冲突与多 JDK 场景

换 JDK 版本之后项目编译不过,这是升级路径上必然会遇到的问题。典型的现象有几种:

  • 报java: 无效的目标发行版: 17:说明 Maven 的编译插件配置的版本和实际用的 JDK 不一致
  • 报无法访问 sun.misc.Unsafe:这是 JDK 9 之后模块系统收紧导致的,某些老库依赖内部 API
  • 报InaccessibleObjectException:反射访问被模块边界拦截

处理思路上,先确认三处配置是否统一:IDEA 里的 Project SDK、Project language level、Maven 的maven-compiler-plugin配置。这三处只要有一处不一致,就会报各种奇怪的错。pom.xml里的配置写法如下:

<properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <maven.compiler.release>17</maven.compiler.release> </properties>

如果确认是模块系统的问题,可以在Run/Debug Configurations的 VM options 里加上--add-opens参数临时放行,但更彻底的方案是升级依赖库到适配新 JDK 的版本。

现象常见原因处理方式
javac不是内部命令Path 未配置或指向错误检查 Path 中的%JAVA_HOME%\bin
IDEA 提示找不到 SDK环境变量未生效或缓存问题新开终端验证,必要时清缓存
编译报无效目标发行版三处版本配置不一致统一 SDK、language level、pom 配置
控制台中文乱码JVM 默认编码非 UTF-8加-Dfile.encoding=UTF-8
项目依赖拉取极慢使用默认国外中央仓库配置国内镜像并重载
IDEA 自动关闭堆内存不足调整 Maximum Heap Size

6. 装了几十次环境之后,我固定下来的几个习惯

装环境这件事,第一次做会觉得很琐碎,做过几次之后就会发现它其实有一套固定节奏。我现在换新机器,从零到能跑起来一个 Spring Boot 项目,基本控制在二十分钟以内,靠的就是下面这几个习惯。

第一个习惯是目录规划先于安装。我会在动手之前先想好所有的安装位置,比如统一放到D:\dev\下面,dev\jdk\jdk-17、dev\maven、dev\git、dev\idea,全部英文、无空格。这样做的好处是后面所有的配置都只需要记住一个前缀,写配置文件时不容易写错。而且重装系统的时候,只要这个目录在非系统盘,很多东西根本不用重装,改一下环境变量就能继续用。

第二个习惯是每装完一个组件就立刻验证一次。不要等全部装完再一起测,那样一旦出问题你根本不知道是哪一步引入的。装完 JDK 就敲java -version,装完 Maven 就敲mvn -v,装完 Git 就敲git --version。单点验证的成本极低,但能把问题定位范围压缩到最小。

第三个习惯是把配置文件备份起来。settings.xml、.zshrc、环境变量的导出结果、IDEA 的配置导出包,这些东西我会定期同步到一个云盘目录。因为环境配置是那种"配好了就再也不会看"的东西,等哪天电脑出问题需要重建,凭记忆是完全想不起来的。IDEA 本身提供了File → Manage IDE Settings → Export Settings的功能,能一次性把插件、快捷键、代码风格打包导出,这个功能值得用起来。

第四个习惯是不追新版本。前面提过版本选择的原则,这里再说一遍是因为它真的很重要。JDK 的 LTS 版本生命周期长、生态适配成熟、遇到问题在网上搜到的解决方案也多。真正需要新版本特性的时候再升,不要为了"用最新的"而去承担无谓的适配成本。同理,IDEA 的版本也不用急着更新,等一个小版本稳定了再升,能避开不少初版 bug。

最后一个想说的是,环境配置本身不是目的,它只是让你能开始写代码。如果你现在卡在某一步上,最快的解决办法往往不是反复试,而是把报错信息完整地复制出来去搜,或者找一个能跑通的环境对照着看差异在哪。绝大多数环境问题都有前人踩过,关键是你能不能把现象描述清楚。

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

PyCharm 配置 Git 全指南:从命令行到图形化工作流

简介&#xff1a;这份PDF图文教程面向Python开发者与刚接触版本控制的初学者&#xff0c;聚焦在PyCharm中配置并使用Git这一常见痛点&#xff0c;帮助读者在IDE内完成代码版本管理与团队协作&#xff0c;无需频繁切换命令行。资源包共1个PDF文件&#xff0c;大小约257KB&#x…

作者头像 李华
网站建设 2026/9/29 2:57:27

【Codex教育管理系统】用文章素材库管理提示词拼接与前端素材选择

教育管理系统文章素材用Codex自动生成项目代码 维护角色、绘画风格、背景、主题、形象、动作、光影、服装和情绪等内容素材,为提示词拼接和前端素材选择提供数据来源。它在教育管理系统里承担内容沉淀、资源配置或业务流转职责,后续页面、接口和权限都需要围绕这条业务主线设…

作者头像 李华
网站建设 2026/9/29 2:57:22

【Codex教育管理系统】用考试安排管理考试计划与历史试卷同步

考试安排在教育管理系统中的价值,在于把考试科目、班级、试卷和历史试卷同步成可执行的考试计划。模块需要和现有接口、权限、页面状态保持一致,不能只写成普通后台表格。 本文基于 考试中心/数据信息_考试数据信息_考试安排 对应源码,把业务目标拆成模型字段、接口规则、页…

作者头像 李华
网站建设 2026/9/29 2:56:51

Aimsun交通仿真数据分析实战:取数、指标计算与可视化指南

1. 先起个底&#xff1a;Aimsun到底会输出哪些数据&#xff0c;哪些值得留前阵子帮某市做一个片区信控优化项目&#xff0c;Aimsun模型跑一遍仿真&#xff0c;输出文件直接塞满了我的移动硬盘。20多个G的数据摆在面前&#xff0c;真正能写进报告里的结论其实只有几个数字&#…

作者头像 李华
网站建设 2026/9/29 2:55:39

支付宝代扣签约接口全攻略:权限、密钥与回调问题排查实战

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

作者头像 李华