十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Java环境配置完全指南:从JDK下载到IDEA与Maven,一次搞定

Java环境配置完全指南:从JDK下载到IDEA与Maven,一次搞定 学Java最容易被劝退的地方其实不是语法反而是第一步的“环境配置”。我见过太多人兴致勃勃买书、看视频结果卡在JDK下载、环境变量、命令行不认识javac这一步上一卡就是一两天心态直接崩掉。网上教程很多但要么是好几年前的版本要么把关键步骤一笔带过照着做还是会报错。这篇教程我就按自己带新人时总结的完整流程来写从JDK下载、环境变量原理、命令行编译到IDEA配置、Maven关联每一步都讲清楚“为什么这么做”遇到报错也知道去哪查。不管你是完全零基础还是装到一半卡住了照着这篇文章走一遍环境问题基本能一次解决。1. 环境配置前的整体思路先把“三件套”搞明白1.1 为什么很多人会卡在环境配置这一步很多人一上来就搜“Java安装教程”然后随便下载一个JDK双击安装配置环境变量接着敲java -version看起来成功了就开始写代码。结果真正编译的时候冒出一堆错误比如javac 不是内部或外部命令、错误: 找不到或无法加载主类又或者代码里中文乱码。这些问题的根源几乎都是环境配置时忽略了“底层逻辑”。环境配置这件事本质上就是让操作系统和开发工具知道“你的JDK装在哪”“应该去哪里找编译器和运行环境”。如果你不理解这些变量是干嘛的出了问题就只能跟着教程瞎试运气好能蒙对运气不好就越改越乱。所以这篇文章不只是给步骤还会把每一步背后的原因讲清楚。1.2 JDK、IDE、构建工具每个角色负责什么Java开发环境通常包含三样东西JDK、IDE集成开发环境、构建工具。你可以把它们类比成一个厨房JDK是整套“厨具食材处理能力”它包含了javac编译器、java运行器、核心类库是你真正用来开发Java程序的根基。IDE是“操作台”帮你整理代码、提示语法错误、一键运行。常见的如IntelliJ IDEA、Eclipse、VS Code。构建工具是“自动化的厨师助理”帮你管理第三方库、编译、打包。最典型的就是Maven。很多新手以为装了IDEA就能写Java其实IDE里面自带的只是一个编辑器真正干活的是JDK。IDEA在背后调用JDK来编译运行代码所以JDK必须是第一个装好、配好的。1.3 JDK版本别追新8、11、17、21怎么选JDK版本奇奇怪怪的命名劝退了不少人。先说结论自学新项目推荐用JDK 17或者21如果你明确知道自己要进的公司用的是老项目那就跟他们保持一致装JDK 8也行。这里简单解释一下。Oracle每个一段时间会发布一个新的Java版本其中“LTS”是长期支持版本意思是官方会持续维护很久适合生产环境使用。近年大家用得比较多的LTS版本是8、11、17、21。JDK 8诞生于2014年稳定性极强大量老企业项目都还在用JDK 17和21则在性能、语法特性上有明显提升比如var局部变量推断、增强的switch表达式、虚拟线程JDK 21等。那为什么很多人建议新手装JDK 8因为老教程多、公司存量项目多遇到问题容易搜到答案。但我的建议是如果你没有历史包袱直接用17或21没毛病IDE和主流框架早就全面支持了。一旦你理解了Java语法版本迁移对你来说不会很难。另外要注意区分两个名词JDKJava Development Kit开发工具包和JREJava Runtime Environment运行环境。你写代码必须装JDK它会包含JRE单独装JRE只能运行编译好的class文件不能编译Java源码。1.4 选Oracle JDK还是OpenJDK这也是一个纠结很多人的问题。Oracle JDK曾经是官方正统但从Java 11之后Oracle调整了许可协议免费版和商业版做了区分直接从Oracle官网下载还要注册账号对新手很不友好。我的建议是直接使用Adoptium Temurin也就是社区维护的OpenJDK发行版。它是开源免费、长期支持、下载不需要登录而且和Oracle JDK在绝大多数场景下没有区别。国内也能找到清华、华为等开源镜像站下载速度快。其它发行版还有Azul Zulu、Amazon Corretto、腾讯Kona等都行核心标准只有一个能用、好下载、长期有人维护。2. JDK下载安装与环境变量的底层原理2.1 从哪下载JDK以Temurin为例我以Windows系统为例演示整个下载和安装过程。其它系统思路完全一样只是安装路径和命令提示符不太一样。打开Adoptium官网adoptium.net找到“Latest release”入口选择你的操作系统Windows、CPU架构一般是x64下载.msi安装包或者.zip压缩包。如果你是老电脑不确定CPU架构可以按WinR输入dxdiag查看“操作系统”和“系统类型”正常近十年的电脑基本都是x64。.msi是Windows安装程序会帮你做不少事但也会往注册表写东西.zip是绿色版解压就能用所有操作自己控制。新手建议下载.msi安装时能省点心但下面配置环境变量的步骤不要省。如果网速不行也可以到国内的一些开源镜像站下载Temurin搜索“Temurin 镜像”就能找到。注意认准官方域名或可信的镜像站不要随便去来历不明的下载站那种捆绑了很多乱七八糟的软件。2.2 安装细节安装路径和“下一步陷阱”安装JDK的时候唯一要注意的就是路径。Windows下默认路径通常是C:\Program Files\Eclipse Adoptium\jdk-17.0.x\这个路径有个问题Program Files中间带了空格。大部分情况下没问题但你以后可能会写批处理脚本、配置某些开发工具有些工具处理不了带空格的路径会报一些莫名其妙的错。我个人的习惯是修改安装路径到一个干净、纯英文、没有空格的目录比如D:\Java\jdk-17.0.10以后再用IDEA、Maven、Tomcat的时候你会感谢自己当初这个决定。安装过程中那些“选组件”的界面默认勾选就行不用动。装完之后可以顺手把自动更新关掉避免后续升级带来版本不一致。2.3 环境变量详解JAVA_HOME、PATH、CLASSPATH这一步是整个教程的核心也是很多人迷迷糊糊的地方。JAVA_HOME保存JDK的安装路径比如D:\Java\jdk-17.0.10。它的作用是给其他软件提供线索——IDEA、Maven、Tomcat这些工具在你启动项目时都会主动去查JAVA_HOME环境变量找到JDK在哪。所以它必须指向JDK的根目录不是bin目录也不是lib目录。PATH系统在命令行执行命令时会按顺序在PATH列出的目录中寻找对应的可执行程序。如果你在命令行输入java系统会在PATH包含的所有目录里找java.exe。我们配置环境变量要做的就是把%JAVA_HOME%\bin加进PATH这样不管当前命令行在哪个目录都能直接使用java和javac命令。CLASSPATH以前的老教程会教你配一个CLASSPATH.;%JAVA_HOME%\lib告诉Java去哪里找用户类库。但从JDK 5之后不配置CLASSPATH也能正常编译运行而且如果配置错了还会导致一些奇怪的类加载问题。我现在带新人都建议不要配CLASSPATH少给自己找麻烦。所以需要手工配置的其实就是两件事新建JAVA_HOME在PATH里添加%JAVA_HOME%\bin。2.4 完整配置步骤Windows 10/11右键“此电脑”或“我的电脑”选择“属性”。点击“高级系统设置”再点击“环境变量”。在“系统变量”区域点击“新建”变量名填JAVA_HOME变量值填你的JDK安装路径比如D:\Java\jdk-17.0.10。注意不能带引号也不要在路径末尾加分号。在“系统变量”列表里找到Path选中后点击“编辑”。不同Windows版本界面略有差异Win10后常见的是弹出一个列表点“新建”输入%JAVA_HOME%\bin点击确定。有些老电脑使用的是旧版“编辑系统变量”对话框整个Path是一长串用分号隔开的文本那就在末尾追加一个分号再把%JAVA_HOME%\bin粘上去。注意不要同时把JAVA_HOME配成C:\Program Files\...这种带空格的路径后又想在命令行里直接用。虽然这样确实能跑但为了长远省心尽量用无空格路径。配置完成后关键一步重开一个命令行窗口。已经打开的终端窗口不会自动刷新环境变量你必须在配置完之后新开窗口验证。然后依次执行java -version javac -version如果输出类似下面这样的内容说明JDK安装成功。java version 17.0.10 2024-01-16 LTS Java(TM) SE Runtime Environment (build 17.0.1011) Java HotSpot(TM) 64-Bit Server VM (build 17.0.1011, mixed mode, sharing)这里顺便说一个常见现象java -version有输出但javac -version报“不是内部或外部命令”。原因大概率是你机器上本来就有另一个Java比如某些软件自带的JRE或者Path里没有正确加入%JAVA_HOME%\bin。也可能是你Path中写的是绝对路径而那个目录下只有java.exe没有javac.exe。3. 从命令行编译到IDEA跑通第一个Java程序3.1 为什么建议先学会用命令行运行程序很多人装了IDEA就直接点点点运行从没在命令行里敲过javac和java。这样不是不行但对类路径、编译过程的理解会很模糊。后面学到Spring Boot、遇到诡异的类冲突和路径问题时你会因为不清楚“编译器和运行时到底在干什么”而特别痛苦。我建议每个新手在图形界面之前先老老实实在命令行里手动编译运行一次Hello World。这个过程会建立你对“源代码→字节码→运行”这个链路最直观的感知。3.2 手把手用记事本写一个Hello World先新建一个目录比如D:\JavaDemo。在目录里新建一个文本文件命名为Hello.java。注意文件扩展名必须是.java不是.txt。如果你看不到文件扩展名就去文件资源管理器“查看”选项里勾选“文件扩展名”。文件内容如下public class Hello { public static void main(String[] args) { System.out.println(Hello, Java!); } }这里有个硬性规则public class后面跟的类名必须和文件名完全一致包括大小写。文件叫Hello.java类名就必须是Hello不能是hello。这是Java编译器的强制要求。然后在目录的地址栏输入cmd回车会在当前目录打开命令行窗口输入javac Hello.java java Hellojavac Hello.java会把源码编译成Hello.class字节码文件。这时目录下会多出一个Hello.class但注意运行的时候不要加.class后缀java Hello才是对的。如果你写成了java Hello.class会报“无法加载主类”之类的错误。3.3 package、classpath与常见命令错误上面是最简单的例子但现实中的Java文件大都有package声明也就是包名。包名相当于给类分门别类的命名空间比如package com.demo; public class Hello { public static void main(String[] args) { System.out.println(Hello, Package!); } }这时候再执行javac Hello.java编译仍会成功但运行命令就变了。你需要回到D:\JavaDemo的上一级目录然后运行java com.demo.Hello命令行会去对应的目录层级下找com/demo/Hello.class。很多人第一次遇到这个报错“错误: 找不到或无法加载主类”就是因为在D:\JavaDemo目录下直接运行java com.demo.Hello系统找不到com这个目录。所以要站在包结构之外的目录运行。还有一个实用的编译选项javac -d . Hello.java。-d的意思是“指定class文件的输出目录”.表示当前目录。这个命令会自动根据package声明生成对应的文件夹结构比默认在源码旁边生成class文件更符合实际项目习惯。3.4 IDEA安装与JDK关联配置命令行跑通后再上IDE就轻松多了。IDE推荐使用IntelliJ IDEA Community Edition也就是社区版免费而且功能对Java学习来说完全够用。JetBrains官网下载即可注意认准“Community”版本不要下载成Ultimate付费版。安装过程一路下一步首次启动会让你选择主题和插件不用装什么额外插件默认就好。重点来了怎么让IDEA使用你刚配置好的JDK。从IDEA 2020之后首次新建项目时可以直接选择一个JDK。如果没有自动识别或者你以后想切换JDK版本可以这样操作进入File → Project Structure → SDKs点加号添加JDK选择你的JDK安装路径比如D:\Java\jdk-17.0.10。然后在Project设置里的SDK下拉框选择这个JDK。创建新项目时左侧类型选“Java”构建工具可以不选或者选“IntelliJ”直接创建一个空项目然后右键src目录New → Java Class输入类名Hello写上main方法右键运行即可。如果你新建项目时IDEA提醒“No JDK found”大概率是IDEA没读到环境变量JAVA_HOME。原因可能是你配环境变量之后没有重启IDEA。重启IDEA就会自动识别到。4. Maven环境配置你的下一个必经之路4.1 Maven解决的问题依赖、构建、打包写Java从一个文件变成十个文件再到引入第三方库时你会发现纯靠手工管理jar包非常痛苦。Maven就是用来解决这个问题的它帮你管理项目依赖、统一项目结构、自动编译、运行测试、打包发布。你把Maven类比成手机上的应用商店需要哪个库比如MySQL驱动、Jackson解析库在配置里写一句坐标Maven就会自动去远程仓库下载并放进本地仓库下次别的项目可以直接用不用再到处找jar包。所以配置完JDK后紧接着配置Maven是非常合理的下一步。4.2 Maven安装与环境变量配置从Maven官网maven.apache.org下载二进制压缩包选择apache-maven-3.9.x-bin.zip。解压到一个干净目录比如D:\apache-maven-3.9.6。然后一样配置环境变量新建系统变量MAVEN_HOME值为D:\apache-maven-3.9.6。在Path中追加%MAVEN_HOME%\bin。重开命令行窗口输入mvn -v看到类似的输出就说明成功Apache Maven 3.9.6 (bc2320f3...) Maven home: D:\apache-maven-3.9.6 Java version: 17.0.10, vendor: Eclipse Adoptium, runtime: D:\Java\jdk-17.0.10这里要求Java版本和Maven兼容。Maven 3.9版本可以跑在JDK 8到JDK 21上问题不大。如果你装的是很老的Maven 3.6配合JDK 17可能会有兼容性问题建议直接用新一点的Maven版本。4.3 settings.xml本地仓库与镜像配置Maven默认会把下载的依赖放到用户目录/.m2/repository比如C:\Users\你的用户名\.m2\repository。用久了C盘会越来越占空间而且很多人习惯把开发环境放在D盘所以可以改一下本地仓库位置。找到Maven解压目录下的conf/settings.xml用文本编辑器打开找到localRepository标签默认是被注释掉的。取消注释并改成你想要的位置localRepositoryD:\maven_repo/localRepository之后下载的依赖都会存到这个目录。还有一个必配项镜像。Maven默认从中央仓库下载依赖国内网络访问很慢甚至经常超时。建议在settings.xml的mirrors节点里加上国内镜像。比如阿里云镜像mirror idaliyunmaven/id mirrorOfcentral/mirrorOf nameAliyun Maven Mirror/name urlhttps://maven.aliyun.com/repository/public/url /mirror这样下载依赖的速度会快很多。等你后续学SSM、Spring Boot这一步能救命。4.4 IDEA中集成MavenIDEA自带了一个Maven版本但为了统一我习惯让它使用我们自己配置的Maven和settings.xml。进入File → Settings → Build, Execution, Deployment → Build Tools → Maven修改三个地方Maven home path选择你的Maven安装目录D:\apache-maven-3.9.6。User settings file选择D:\apache-maven-3.9.6\conf\settings.xml。Local repository这里会自动读取settings.xml里的配置显示为D:\maven_repo。这样IDEA在创建Maven项目时就会用我们配置好的环境。以后新建项目时在“构建工具”中选择“Maven”就能见到熟悉的项目结构了。5. 常见问题与排查技巧实录5.1 环境变量相关报错速查表我整理了一些新手最常遇到的问题方便你对照排查。报错信息或现象原因解决办法java 不是内部或外部命令PATH里没有配置或没生效检查Path是否包含%JAVA_HOME%\bin新开命令行窗口javac 不是内部或外部命令只装了JRE或Path配置指向了不完整目录用where java查看位置确认你的JDK目录下有javac.exejava -version版本和自己装的不一样系统里存在多个JDKPATH优先级导致用了旧的在系统变量里调整Path顺序或用where java定位所有java.exe来源错误: 找不到或无法加载主类 Hello运行命令带上了.class或类名与文件名不一致运行时用java Hello不要带后缀错误: 找不到或无法加载主类 com.demo.Hello运行的目录不是包结构的根目录退到包结构的上一级目录再运行源码是中文输出乱码文件编码与编译器默认编码不一致用UTF-8保存文件编译时加javac -encoding UTF-8IDEA提示没有JDKIDEA启动时没读到环境变量重启IDEA在Project Structure里手动指向JDK目录5.2 环境变量改了为什么不生效这个问题在群里被问过无数次。修改环境变量后已经打开的命令行窗口不会自动感知变化必须重新开一个。如果你改了环境变量但cmd里还是旧值先别怀疑配置错了把终端全部关掉再重新启动一个cmd。还有一个坑是Windows环境变量分“用户变量”和“系统变量”。系统变量对所有用户生效用户变量只对当前用户生效。如果你的系统变量里配了错误的值用户变量里配了正确的值实际运行时可能会因为你当前用户的变量优先而被正确的用户变量覆盖。这个优先级关系搞清楚排查起来会快很多。另外%JAVA_HOME%这种引用方式也容易让人迷惑。如果你在用户变量的Path里写%JAVA_HOME%\bin而JAVA_HOME定义在系统变量里那是能引用的如果你把JAVA_HOME定义在用户变量里却希望在系统变量的Path里引用这就有兼容性问题了。最简单的做法是JAVA_HOME和Path都配置在“系统变量”里保持一致性。5.3 多JDK共存与版本切换开发的时候可能会遇到这种情况手头多个项目一个要JDK 8一个要JDK 17。不要卸载重装只要你在环境变量里用JAVA_HOME指认出当前要用的版本切换就很方便。假设你装了D:\Java\jdk-8和D:\Java\jdk-17需要切换时就改JAVA_HOME的值同时确认Path里用的是%JAVA_HOME%\bin。新开命令行验证java -version即可。在IDEA层面每个项目也可以独立指定SDKProject Structure → Project → SDK选择该项目的JDK版本互不影响。这比改全局环境变量更常用也推荐大家用这个方式管理多版本项目。命令行里的全局版本主要影响的是你直接使用mvn、java这类命令的场景。5.4 我踩过的一些坑最后说几个我在实际教学中反复看到的错误都是小事但特别浪费新手时间。第一个坑是安装路径带空格。我曾经帮人排查一个问题他装的是默认路径C:\Program Files\Eclipse Adoptium\...后来在Maven插件里执行脚本时总是莫名其妙的路径解析错误。改成无空格路径后问题立刻消失。所以再次强调安装路径尽量用D:\Java\jdk-...或类似格式。第二个坑是文件名显示不全。Windows默认隐藏扩展名新手建文件时以为建的是Hello.java实际是Hello.java.txt。编译时javac Hello.java会提示找不到文件。去“查看”中勾选“文件扩展名”即可解决。第三个坑是下载到带推广广告的解压站资源解压出来根本不是JDK而是安装了一堆全家桶。下载一定认准官网或者可信镜像站不要用百度搜索里排在前面的各种“高速下载器”。第四个坑是命令行编码问题。Windows cmd默认编码是GBK如果你的源码用UTF-8保存并包含中文在cmd里编译运行可能直接报“编码GBK的不可映射字符”。最省事的办法是IDE和编辑器统一用UTF-8命令行编译时加上-encoding UTF-8参数或者在Java源码里减少硬编码中文输出内容用英文或属性文件管理。我个人在实际带新人的过程中一直强调一个习惯配完环境不要急着打开IDE先在命令行里手动完成一次“写代码→编译→运行”的闭环。这个动作能帮你真正建立Java程序从源码到运行的整体认知。以后再遇到Maven、Spring Boot的环境问题你会自然地想到去查JAVA_HOME、查Path、查classpath而不是陷入“照着教程瞎改”的死循环。环境配置这类事情看起来琐碎但恰恰是后面所有学习的基础。把这半小时花在这里非常值得。
返回列表