跳到主要内容JDK 核心实操指南:从安装配置到项目打包调试全流程 | 极客日志Javajava
JDK 核心实操指南:从安装配置到项目打包调试全流程
介绍 JDK 核心实操,涵盖版本选择(优先 LTS)、多系统安装配置(Windows/Linux/Mac)、环境变量设置。详解 javac/java/jar/javadoc/jdb 等核心命令,演示项目编译打包流程及 MANIFEST.MF 配置。提供 jps/jstat/jmap 等性能排查工具用法,以及多版本管理方案。最后总结常见问题解决方案与最佳实践,帮助开发者快速掌握 JDK 使用与维护。
kaikai5 浏览 JDK(Java Development Kit)是 Java 开发的核心工具包,包含编译器(javac)、运行时(JRE)、调试器(jdb)、打包工具(jar)及性能分析工具(jps/jstat 等),是开发、编译、运行 Java 程序的基础。本文聚焦 JDK 核心实操,覆盖版本选择、安装配置、编译运行、工具使用、项目打包、多版本管理及问题排查,适配 Windows/Linux/Mac 三大系统,兼顾新手入门与企业级实战需求,优先选用免费无许可风险的 OpenJDK 衍生版(Adoptium Temurin、Amazon Corretto)。
一、前期准备:JDK 版本选择与下载
1. 版本选择(优先 LTS 长期支持版)
JDK 版本分为 和,企业级开发优先选 LTS 版本,避免频繁升级兼容问题:
短期支持版(STS,支持 6 个月)
长期支持版(LTS,支持 5 年 +)
| JDK 版本 | 类型 | 适用场景 | 核心特点 |
|---|
| JDK 8 | LTS | 传统项目、桌面应用、安卓开发 | 经典稳定,兼容所有框架,国内企业主流 |
| JDK 11 | LTS | 服务器开发、微服务(Spring Boot 2.x) | 模块化改造,移除冗余组件,性能提升 |
| JDK 17 | LTS | 新项目、云原生开发(Spring Boot 3.x) | 长期支持至 2029 年,新增密封类、模式匹配 |
| JDK 21 | LTS | 前沿项目、高性能场景 | 虚拟线程、结构化并发,大幅提升并发性能 |
2. 安全下载渠道(免费无商用限制)
3. 版本适配
- Windows/Linux:区分 x86(32 位)/x64(64 位);
- MacOS:区分 Intel 芯片 / Apple Silicon(ARM64);
- 嵌入式 / 服务器:ARM 架构需下载对应版本(如 aarch64)。
二、JDK 安装与环境变量配置
环境变量是 JDK 的核心配置,需确保JAVA_HOME、Path配置正确,否则 javac、java 等命令无法全局调用。
1. Windows 系统(以 JDK 17 Temurin 为例)
(1)安装版安装步骤
- 下载
.msi安装包,右键「以管理员身份运行」;
- 勾选「Set JAVA_ HOME variable」「Add to PATH」,安装路径建议选非中文目录(如
D:\Java\jdk-17.0.9+9);
- 安装完成后,按 Win+R 输入
cmd,执行java -version和javac -version验证,输出版本信息即成功。
(2)绿色版(解压即用)配置
- 下载
.zip压缩包,解压到D:\Java\jdk-17.0.9+9;
- 配置环境变量:
- 右键「此电脑→属性→高级系统设置→环境变量」;
- 新建系统变量
JAVA_HOME,值为解压路径(D:\Java\jdk-17.0.9+9);
- 编辑系统变量
Path,新增%JAVA_HOME%\bin,移至顶部;
- 重启 CMD,执行
java -version验证。
2. Linux 系统(Ubuntu 22.04 为例)
(1)APT 一键安装
sudo apt update
sudo apt install openjdk-17-jdk
(2)手动配置环境变量
vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
java -version && javac -version
3. MacOS 系统
(1)Homebrew 安装(推荐)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install temurin17
java -version
(2)手动配置环境变量
vim ~/.zshrc
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
source ~/.zshrc
4. 核心验证命令
java -version
javac -version
echo $JAVA_HOME
echo %JAVA_HOME%
三、JDK 核心命令实操(开发必备)
1. javac:Java 编译器(将.java 编译为.class)
基本用法
核心示例
javac Hello.java
javac -encoding UTF-8 Hello.java
javac -encoding UTF-8 -d bin Hello.java
javac -encoding UTF-8 -d bin src/*.java
javac -encoding UTF-8 -d bin -cp lib/* src/Hello.java
2. java:运行编译后的.class/JAR 包
基本用法
java [JVM 参数] 主类名/JAR 包路径
核心示例
java Hello
java com.example.Hello
java -jar demo.jar
java -Xms256m -Xmx1024m -jar demo.jar
java -cp bin:lib/* com.example.Hello
3. jar:打包工具(将.class 打包为 JAR/WAR)
核心用法
jar cvf demo.jar -C bin/ .
jar tvf demo.jar
jar xvf demo.jar -C dist/
jar cvfm demo.jar MANIFEST.MF -C bin/ .
关键:可执行 JAR 的 MANIFEST.MF 配置新建MANIFEST.MF文件,内容如下(末尾必须空一行):
Main-Class: com.example.Hello
Class-Path: lib/commons-lang3.jar lib/gson.jar
4. javadoc:生成 API 文档
javadoc -encoding UTF-8 -charset UTF-8 -d doc Hello.java
javadoc -encoding UTF-8 -charset UTF-8 -d doc -subpackages com.example
5. jdb:简易调试工具(命令行断点调试)
javac -g -encoding UTF-8 Hello.java
jdb Hello
stop at Hello:10
run
next
print var
exit
四、JDK 内置工具实战(排查问题 / 性能调优)
JDK 内置多款工具,无需额外安装,是定位 Java 程序问题的核心利器。
1. 进程 / 内存 / GC 工具(服务器必备)
| 命令 | 功能 | 实操示例 |
|---|
| jps | 查看 Java 进程 PID | jps -lv(显示完整类名 + JVM 参数) |
| jstat | 监控 GC 状态 | jstat -gcutil 12345 1000 10(每 1 秒采样,共 10 次) |
| jmap | 导出内存快照 | jmap -dump:format=b,file=heap.hprof 12345 |
| jstack | 导出线程快照(排查死锁) | jstack 12345 > thread_dump.txt |
| jinfo | 查看 / 修改 JVM 参数 | jinfo -flags 12345(查看进程 JVM 参数) |
2. 可视化分析工具
(1)jconsole(基础监控)
直接执行jconsole,选择目标 Java 进程,可实时监控:
- 内存:堆 / 非堆内存使用趋势,定位内存泄漏;
- 线程:检测死锁、查看线程阻塞状态;
- GC:垃圾回收次数、耗时,判断 GC 是否频繁。
(2)jvisualvm(深度分析)
JDK 8 内置,JDK 11 + 需单独下载,核心功能:
- 内存快照分析:找出占用内存最多的对象,定位内存泄漏;
- Visual GC 插件:直观查看新生代 / 老年代 GC 情况;
- 线程分析:一键检测死锁,分析 CPU 占用高的线程。
3. 反编译 / 依赖分析工具
(1)javap:反编译.class 文件
javap -c Hello.class
javap -verbose Hello.class
(2)jdeps:分析依赖
jdeps --list-deps demo.jar
jdeps -cp lib/* src/Hello.java
五、Java 项目编译打包全流程(实操示例)
以「多包结构 + 外部依赖」的 Java 项目为例,完整流程如下:
1. 项目目录结构
demo-project/
├── lib/ # 外部依赖 jar 包
│ ├── commons-lang3.jar
│ └── gson.jar
├── src/ # 源码目录
│ └── com/
│ └── example/
│ └── Hello.java
├── bin/ # 编译输出目录
├── doc/ # API 文档目录
└── MANIFEST.MF # 可执行 JAR 配置文件
2. 核心操作步骤
javac -encoding UTF-8 -d bin -cp lib/* src/com/example/Hello.java
javadoc -encoding UTF-8 -charset UTF-8 -d doc -subpackages com.example
jar cvfm demo.jar MANIFEST.MF -C bin/ .
java -Xms256m -Xmx1024m -jar demo.jar
六、JDK 多版本管理(解决版本兼容)
开发中常需切换 JDK 版本(如 JDK 8 编译、JDK 17 运行),不同系统有专属管理方式:
1. Windows 系统
2. Linux 系统
sudo update-alternatives --config java
sudo update-alternatives --config javac
3. MacOS 系统
brew install jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
eval "$(jenv init -)" >> ~/.zshrc
source ~/.zshrc
jenv add /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
jenv global 17
jenv local 8
七、常见问题排查与解决方案
1. java/javac: command not found
- 原因:Path 未配置或
JAVA_HOME路径错误;
- 解决:重新配置环境变量,确保
%JAVA_HOME%\bin在 Path 中,重启终端。
2. 编译报错「编码 GBK 的不可映射字符」
- 原因:未指定编码,系统默认 GBK 与源码 UTF-8 冲突;
- 解决:编译时加
-encoding UTF-8参数。
3. ClassNotFoundException/NoClassDefFoundError
- 原因:类路径配置错误、缺少依赖、主类名错误;
- 解决:检查
-cp参数是否包含依赖,主类名是否带包名。
4. 运行 JAR 包报错「Could not find or load main class」
- 原因:MANIFEST.MF 中 Main-Class 配置错误、JAR 包结构错误;
- 解决:检查 Main-Class 是否带包名,JAR 包内是否有对应.class 文件。
5. 内存溢出(OOM)
- 原因:堆内存不足、内存泄漏;
- 解决:增大
-Xmx参数(如-Xmx2g),用 jmap+jvisualvm 分析内存泄漏。
八、JDK 使用最佳实践
- 版本选择:企业级项目优先选 LTS 版本(8/11/17),新项目推荐 JDK 17;
- 环境配置:
JAVA_HOME路径避免中文 / 空格,统一命名规范(如jdk-17.0.9+9);
- 编译规范:强制指定
-encoding UTF-8,避免中文乱码;
- JVM 调优:根据程序类型配置参数(桌面程序
-Xmx1g,服务器程序-Xmx4g+G1 GC);
- 工具使用:定期用 jstat/jvisualvm 监控程序,提前发现内存 / 线程问题;
- 安全维护:定期更新 JDK 补丁,优先使用 OpenJDK 衍生版,避免 Oracle 许可风险。
总结
- JDK 核心实操的基础是「正确安装 + 环境变量配置」,
JAVA_HOME和Path是关键;
- 编译运行时需注意编码和类路径,打包可执行 JAR 需正确配置 MANIFEST.MF;
- JDK 内置工具(jps/jstat/jvisualvm)是排查 Java 程序问题的核心,需熟练掌握;
- 多版本管理可解决不同项目的版本兼容问题,提升开发效率。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online