Java 开发中常用的命令行工具
以下是 Java 开发中常用的命令行工具及其功能的分类总结:
一、基础编译与运行
-
javac- 功能:Java 编译器,将
.java源文件编译为.class字节码文件。 - 示例:
javac Main.java
- 功能:Java 编译器,将
-
java- 功能:启动 JVM 并运行主类或可执行 JAR 文件。
- 示例:
java Main # 运行类 java -jar app.jar # 运行 JAR
二、打包与分发
-
jar- 功能:创建、查看或解压 JAR(Java Archive)文件。
- 示例:
jar cvf app.jar *.class # 打包 jar tf app.jar # 查看内容
-
jlink(Java 9+)- 功能:生成自定义的轻量级 JRE 运行时镜像,仅包含所需模块。
- 示例:
jlink --module-path mods --add-modules java.base --output myjre
三、调试与监控
-
jdb- 功能:命令行调试工具,支持断点、单步执行等。
- 示例:
jdb -classpath . Main
-
jps- 功能:列出当前用户的 Java 进程 ID 和主类名。
- 示例:
jps -l # 显示完整主类名
-
jstack- 功能:生成线程转储(Thread Dump),用于分析死锁或高 CPU 问题。
- 示例:
jstack <PID> > thread_dump.txt
-
jmap- 功能:生成堆转储(Heap Dump)或内存使用统计。
- 示例:
jmap -dump:live,format=b,file=heap.hprof <PID>
-
jstat- 功能:监控 JVM 统计信息(GC、类加载、编译等)。
- 示例:
jstat -gcutil <PID> 1000 # 每秒显示 GC 情况
-
jcmd(Java 7+)- 功能:向 JVM 发送诊断命令(生成堆转储、查看系统属性等)。
- 示例:
jcmd <PID> VM.uptime # 查看 JVM 运行时间 jcmd <PID> GC.heap_dump heap.hprof
四、性能分析与诊断
-
jinfo- 功能:查看或动态修改 JVM 参数(如
-Xmx)。 - 示例:
jinfo <PID> -flags # 显示当前 JVM 参数
- 功能:查看或动态修改 JVM 参数(如
-
jhat- 功能:分析堆转储文件(Heap Dump),启动 Web 界面浏览对象引用。
- 示例:
jhat heap.hprof
-
jdeps- 功能:分析类或 JAR 文件的依赖关系(模块化迁移辅助工具)。
- 示例:
jdeps -s app.jar
五、安全与签名
-
keytool- 功能:管理密钥库(Keystore)和数字证书。
- 示例:
keytool -genkeypair -alias mykey -keystore keystore.jks
-
jarsigner- 功能:对 JAR 文件进行签名或验证签名。
- 示例:
jarsigner -keystore keystore.jks app.jar mykey
六、其他工具
-
javap- 功能:反汇编
.class文件,查看字节码和类结构。 - 示例:
javap -c Main.class # 显示字节码
- 功能:反汇编
-
javadoc- 功能:从源代码注释生成 HTML 格式的 API 文档。
- 示例:
javadoc -d docs/ src/*.java
-
jwebserver(Java 18+)- 功能:启动简易静态文件 HTTP 服务器。
- 示例:
jwebserver -p 8000
-
jrunscript- 功能:执行 JavaScript 等脚本(支持 Nashorn 引擎)。
- 示例:
jrunscript -e "print('Hello')"
总结
这些工具覆盖了 Java 开发的全生命周期,包括编译、打包、调试、性能调优、安全管理等。建议结合具体场景(如内存泄漏分析用 jmap + jhat,线程问题用 jstack)灵活使用。对于新版 JDK,部分工具(如 javah)可能已过时,推荐优先使用替代方案(如 javac -h 生成头文件)。
摘抄自网络,便于检索查找。

浙公网安备 33010602011771号