Java可执行程序命令学习路线攻略
- 📗文章指路
- Java可执行命令
- 1、编译工具 javac
- 2、程序启动工具 java
- 3、API文档生成 javadoc
- 4、反编译工具 javap
- 5、打包部署工具 jar
- 6、调试工具 jdb
- 7、C头文件创建 javah
- 8、JWS应用程序启动 javaws
- 9、安装包创建 javapackager
- 10、JAR文件签名 jarsigner
- 11、密钥库和证书管理 keytool
- 12、依赖分析工具 jdeps
- 13、策略工具 policytool
- 14、脚本执行 jrunscript
- 15、Java进程状态信息获取 jps
- 16、发送诊断命令请求 jcmd
- 17、JVM运行时信息动态维护 jinfo
- 18、可视化监控和管理 jconsole
- 19、堆转储文件分析 jhat
- 20、堆转储快照文件及堆信息查看 jmap
- 21、线程快照生成工具 jstack
- 22、JVM统计信息监视 jstat
- 🌾 总结
📗文章指路
《【Java可执行命令】(一)编译工具javac:从源代码到字节码,深入解析Java编译工具 javac ~》
《【Java可执行命令】(二)启动应用程序java: 深入解析应用程序启动工具 java命令 ~》
《【Java可执行命令】(三)API文档生成工具javadoc: 深入解析Java API文档生成工具javadoc ~》
《【Java可执行命令】(四)反编译工具javap:深入解析应用程序反编译工具javap ~》
《【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~》
《【Java可执行命令】(六)调试工具 jdb:深入解析应用程序调试工具jdb ~》
《【Java可执行命令】(七)C头文件创建工具 javah:以Java本机接口(JNI)规范创建C头文件,深入解析创建工具javah ~》
《【Java可执行命令】(八)JWS应用程序启动工具 javaws:深入解析Java Web Start应用程序的启动工具javaws ~》
《【Java可执行命令】(九)安装包创建工具 javapackager:使用 JavaPackager 工具打包和部署自包含的 Java 应用程序,支持各种选项来指定相关配置~》
《【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~》
《【Java可执行命令】(十一)Java 密钥库和证书管理工具keytool:玩转密钥库和证书管理,深入解析keytool工具的应用与技巧~》
《【Java可执行命令】(十二)依赖分析工具jdeps:通过静态分析字节码并提取相关信息来实现依赖分析 ~》
《【Java可执行命令】(十三)策略工具policytool:界面化创建、编辑和管理策略文件中的权限和配置 ~》
《【Java可执行命令】(十四)脚本执行工具jrunscript :在命令行环境下交互式执行一些简单的脚本或测试代码片段~》
《【Java可执行命令】(十五)Java进程状态信息获取工具 jps:获取和监控Java进程的状态信息 ~》
《【Java可执行命令】(十六)诊断命令请求发送工具 jcmd:提供一种简单而强大的方式来管理和监控 Java 进程 ~》
《【Java可执行命令】(十七)JVM运行时信息动态维护工具 jinfo:一个维护 JVM 相关的配置参数和系统属性的工具,辅助故障排除、诊断和优化 ~》
《【Java可执行命令】(十八)可视化监控和管理工具 jconsole:获取 JVM的内存使用情况、线程活动、GC 行为等重要指标的可视化工具 ~》
《【Java可执行命令】(十九)堆转储文件分析工具 jhat:将Java堆转储文件加载到内存,并在浏览器中提供一个交互式界面进行信息浏览及分析 ~》
《【Java可执行命令】(二十)堆转储快照文件及堆信息查看工具 jmap:生成多格式堆转储文件、打印类加载器信息及查看共享对象映射信息 ~》
《【Java可执行命令】(二十一)线程快照生成工具 jstack:帮助开发人员分析和排查线程相关问题(死锁、死循环、线程阻塞…)》
《【Java可执行命令】(二十二)JVM统计信息监视工具 jstat:通过连接到Java虚拟机的本地媒介,获取并显示关于堆、垃圾回收、类加载、编译器等方面的统计信息~》
Java可执行命令
1、编译工具 javac
- 作用:将 Java 源代码编译为可执行的字节码文件
- 语法:
javac [options] <sourcefiles>
- 常用参数
-d
:指定编译后字节码文件的输出目录;-classpath <path>
:指定编译时查找类、接口和包文件的路径;-sourcepath <path>
:指定查找源文件的路径;-target <version>
:指定生成的Java字节码文件的目标版本;-g
:在生成字节码文件时包含调试信息。
2、程序启动工具 java
- 作用:加载和执行字节码文件,并在JVM中运行这些文件
- 语法:
java [options] classname [arguments]
- 常用参数
-cp <路径>或 -classpath <路径>
:指定类路径来加载Java类文件;-D<名称>=<值>
:设置系统属性;-X
:对非标准参数的支持;-verbose[:class|gc|jni]
:启用不同类型的详细输出;-version
:显示当前安装的Java版本信息;-ea[:<packagename>...|:<classname>]
:在指定的包或类上启用断言;-da[:<packagename>...|:<classname>]
:在指定的包或类上禁用断言。
3、API文档生成 javadoc
- 作用:通过分析源代码中的注释来生成API文档
- 语法:
javadoc [options] [packagenames] [sourcefiles] [@files]
- 常用参数
-d <directory>
:指定生成的文档输出目录并指定要处理的源代码文件;-sourcepath <pathlist>
:指定源代码的路径列表,以及要处理的源文件;-classpath <pathlist>
:指定编译时所需的类路径,以及要处理的源代码文件;-link <url>
:将外部链接添加到生成的文档中;-version
:在生成的文档中包含Java平台的版本信息。
4、反编译工具 javap
- 作用:将Java类文件解析为易于阅读的文本形式,展示其中的信息以及反编译出类的结构、方法、字段、常量池等信息
- 语法:
javap [options] <classname>
- 常用参数
-l
:在输出中显示行号和局部变量表信息;-c
:在输出中显示字节码指令信息;-s
:显示与指定类相关的字节码指令及其源代码的符号信息;-verbose
:在输出中显示更详细信息的命令,它可以显示与指定类相关的字节码指令、常量池、方法、字段和其他类信息;-version
:查看类文件的版本信息。
5、打包部署工具 jar
- 作用:将多个Java类、资源文件和其他依赖项打包成一个单独的归档文件。方便在Java平台上进行打包、分发和部署应用程序
- 语法:
jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
- 常用参数
-c
:创建jar文件;-t
:列出jar文件内容;-i
:生成jar文件的索引信息;-v
:输出详细信息;-f
:指定jar文件名;-e
:设置可执行类(主类)的入口点。
6、调试工具 jdb
- 作用:一个用于调试Java程序的命令行工具,允许开发者使用各种调试功能,例如设置断点、查看变量和堆栈信息、执行单步调试、监视变量值
- 语法:
jdb [options] <class> [arguments]
- 常用参数
-sourcepath <path>
:指定源代码的路径。
- 调试指令
run [class [args]]
:运行 Java 应用程序进行调试;print <expr>
:在调试过程中打印表达式的值;stop at <class>
::在指定的类和行号上设置断点; watch [access|all] <class id>.<field name>
:设置监视点以在字段访问时触发暂停;step
:逐语句执行代码并进入方法调用。
7、C头文件创建 javah
- 作用:生成包含 JNI(Java Native Interface)函数原型的头文件,以便在使用 JNI 连接 Java 和本地代码时进行编译和链接
- 语法:
javah [options] <classes>
- 常用参数
-o <file>
:指定输出的头文件名称;-classpath <path>
:设置查找类文件的路径;-jni
:表示生成用于 JNI 的头文件。
8、JWS应用程序启动 javaws
- 作用:使用JNLP文件作为输入,并根据该文件描述的配置和资源来启动和运行相应的Java应用程序
- 语法:
javaws [运行选项] <jnlp-file> javaws [控制选项]
- 常用参数
-Xnosplash
:运行时不显示启动屏幕;-wait
:等待所有应用程序实例都退出后再退出javaws;-import [导入选项] <jnlp-file>
:将应用程序导入高速缓存。
9、安装包创建 javapackager
- 作用:将Java应用程序打包成可执行或安装文件,使其能够在目标操作系统上以独立的方式运行
- 语法:
javapackager -command [-options]
- 常用参数
-createjar [-options]
:打包程序根据其他参数生成 jar 档案;-deploy [-options]
:打包程序根据其他参数生成 jnlp 和 html 文件;-signJar [-options]
:对 JAR 文件进行签名。
10、JAR文件签名 jarsigner
- 作用:对JAR文件进行数字签名
- 语法:
jarsigner [-options] jar-file alias
- 常用参数
-keystore <url>
:指定密钥库 (Keystore) 文件的路径和名称;-storepass <口令>
:指定密钥库的密码;-keypass <口令>
:指定密钥的密码;-tsa <url>
:指定时间戳服务器的URL;-verify
:验证已签名的 JAR 文件的完整性和有效性。
11、密钥库和证书管理 keytool
- 作用:生成、管理和操作数字证书,以及实现对保护资源进行安全访问的加密和身份验证
- 语法:
keytool [-command_name] [命令] [参数]
- 常用指令
-certreq
:生成证书请求;-exportcert
:导出证书;-genkeypair
:生成密钥对;-importcert
:导入证书或证书链;-list
:列出密钥库中条目。
12、依赖分析工具 jdeps
- 作用:通过静态分析字节码并提取相关信息来实现依赖分析
- 语法:
jdeps [options] <classfiles or jars>...
- 常用参数
-dotoutput <dir>
:DOT 文件输出的目标目录;-s
:仅输出被依赖对象概要;-v
:输出所有类级别被依赖对象;-cp < path>
:指定查找类文件的位置。
13、策略工具 policytool
- 作用:界面化创建、编辑和管理策略文件中的权限和配置
- 语法:
policytool
直接进入图形化界面
14、脚本执行 jrunscript
- 作用:在命令行环境下交互式执行一些简单的脚本或测试代码片段
- 语法:
jrunscript [options] [arguments...]
- 常用参数
-l <language>
:使用指定的脚本语言;-e <script>
:执行给定内联脚本;-f <script file>
:执行给定的外部脚本文件。
15、Java进程状态信息获取 jps
- 作用:查看运行在Java虚拟机(JVM)中的所有Java进程的信息
- 语法:
jps [-q] [-mlvV] [<hostid>]
- 常用参数
-q
:仅显示进程ID,省略主类的全限定名;-m
:显示传递给主类main()方法的参数;-l
:显示完整的类名而非缩写;-v
:显示虚拟机的启动参数;-V
:显示 jps 工具的版本信息。
16、发送诊断命令请求 jcmd
- 作用:通过命令行发送诊断命令给正在运行的 Java 进程,从而执行各种操作,例如生成线程转储、查看堆内存使用情况、触发 GC、打印系统属性
- 语法:
jcmd <pid|main class> <command> [<command arguments>]
- 常用参数
-l
:列出正在运行的 Java 进程;help
:列出特定进程的诊断命令列表;<command>
:执行诊断命令。
17、JVM运行时信息动态维护 jinfo
- 作用:允许用户动态查询和修改 JVM 的运行时信息,包括系统属性、堆参数、环境变量、启动参数等
- 语法
jinfo [option] <pid>
:连接到正在运行的进程;jinfo [option] <executable <core>
:连接到核心文件;jinfo [option] [server_id@]<remote server IP or hostname>
:连接到远程调试服务器。
- 常用参数
-flags
:查看进程的启动参数;-sysprops
:查看进程的系统属性;-flag <name>
:查看特定虚拟机参数的值;-flag [+/-]<name>
:启用或禁用特定虚拟机参数的值。
18、可视化监控和管理 jconsole
- 作用:提供了可视化的方式来获取有关 Java 应用程序的各种信息,包括内存使用情况、线程活动、GC 行为等重要指标
- 语法:
jconsole [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]
19、堆转储文件分析 jhat
- 作用:将Java堆转储文件加载到内存中,并在网页浏览器中提供一个交互式的界面进行查看和分析
- 语法:
jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>
- 常用参数
-J<flag>
:将参数直接传递到运行时系统。例如, -J-mx512m 使用512MB的最大堆大小;-port <port>
:设置HTTP服务器的端口。默认值为7000。
20、堆转储快照文件及堆信息查看 jmap
- 作用:连接到运行中的Java进程,生成指定类型的Java堆转储文件
- 语法
jmap [option] <pid>
:连接到正在运行的进程;jmap [option] <executable <core>
:连接到核心文件;jmap [option] [server_id@]<remote server IP or hostname>
:连接到远程调试服务器。
- 常用参数
-heap
:打印Java堆摘要信息;-histo[:live]
:打印Java堆对象的直方图;如果指定"live"子选项,则只计算存活对象;-dump:<dump-options>
:以hprof二进制格式导出Java堆;-J<flag>
:将参数直接传递给运行时系统。
21、线程快照生成工具 jstack
- 作用:一项用于生成JVM线程快照的诊断工具。帮助开发人员分析和排查应用程序中的线程相关问题,如死锁、死循环、线程阻塞等
- 语法
jstack [-l] <pid>
:连接到正在运行的进程;jstack -F [-m] [-l] <pid>
:连接到挂起的进程;jstack [-m] [-l] <executable> <core>
:连接到核心文件;jstack [-m] [-l] [server_id@]<remote server IP or hostname>
:连接到远程调试服务器。
- 常用参数
-F
:以强制线程转储。当 jstack<pid>没有响应时使用(进程挂起);-m
:打印java和本机框架(混合模式);-l
:长清单,打印有关锁的其他信息。
22、JVM统计信息监视 jstat
- 作用:通过连接到Java虚拟机的本地媒介,获取并显示关于堆、垃圾回收、类加载、编译器等方面的统计信息
- 语法
jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
- 可选参数
-gc
:垃圾回收统计信息;-class
:类加载和卸载信息;-compiler
:JIT编译器执行信息;-gcutil
:垃圾回收的堆情况。
🌾 总结
以下是关于Java可执行命令的简要总结:
命令 | 说明 |
---|---|
编译工具 javac | 使用javac命令将Java源代码编译成字节码文件(.class文件) |
程序启动工具 java | 通过java命令运行已经编译好的Java类文件,启动Java应用程序 |
API文档生成工具 javadoc | 使用javadoc命令生成可阅读的Java API文档,提供给开发者参考使用 |
反编译工具 javap | 使用javap命令可以反编译字节码文件,将其转换为可读的Java源代码 |
打包部署工具 jar | 使用jar命令创建JAR文件(Java归档文件),可以将多个相关的类、资源和元数据打包成单个文件 |
调试工具 jdb | 使用jdb命令进行Java程序的调试,可以设置断点、追踪变量值等 |
C头文件创建工具 javah | 使用javah命令创建与Java本地接口(JNI)相关的C/C++头文件 |
JWS应用程序启动 javaws | 使用javaws命令启动Java Web Start(JWS)应用程序,从网络上自动下载并启动Java应用 |
安装包创建工具 javapackager | 使用javapackager命令创建Java应用程序的安装包,并将其打包成本地安装器 |
JAR文件签名工具 jarsigner | 使用jarsigner命令为JAR文件进行数字签名,以确保文件的完整性和来源验证 |
密钥库和证书管理工具 keytool | 使用keytool命令管理Java密钥库(存储密钥和数字证书),包括生成、导入、导出等功能 |
依赖分析工具 jdeps | 使用jdeps命令分析Java类文件所依赖的其他类和包,帮助解决依赖关系问题 |
策略工具 policytool | 使用policytool命令为Java应用程序创建和编辑安全策略文件,定义权限和授权规则 |
脚本执行工具 jrunscript | 使用jrunscript命令在Java虚拟机上执行JavaScript脚本或命令行表达式 |
Java进程状态信息获取工具 jps | 使用jps命令查看正在运行的Java进程的状态信息,如进程ID、启动类等 |
发送诊断命令请求工具 jcmd | 使用jcmd命令向正在运行的Java进程发送诊断命令请求,例如线程转储、GC标记等 |
JVM运行时信息动态维护工具 jinfo | 使用jinfo命令动态修改和获取正在运行的Java应用程序的配置信息 |
可视化监控和管理工具 jconsole | 使用jconsole命令启动Java监视与管理控制台,可实时监控Java应用程序的运行状态 |
堆转储文件分析工具 jhat | 使用jhat命令分析Java堆转储文件,提供可视化的界面用于检查和分析内存使用情况 |
堆转储快照文件及堆信息查看工具 jmap | 使用jmap命令生成Java堆转储快照文件,并查看堆内存的详细信息 |
线程快照生成工具 jstack | 使用jstack命令生成Java应用程序的线程转储快照,帮助定位死锁和线程相关问题 |
JVM统计信息监视工具 jstat | 使用jstat命令实时监视和收集Java虚拟机的各种运行时统计信息,如垃圾回收、类加载等 |