javac编译源文件生成.class,java运行字节码或JAR包;jps查Java进程PID,jstat监控GC,jstack分析线程,jmap查看堆内存,javap反编译字节码,jar打包部署,jdb调试程序。

你需要在命令行里快速编译、运行、调试、打包或分析 Java 程序,但每次都要翻文档查命令格式和参数含义,反复试错浪费时间。本指南只讲真实开发中高频使用的 JDK 命令,每条都配可直接复用的典型用法、关键参数说明和易踩坑提示,不解释基础概念,不罗列冷门选项。
编译与运行:javac 和 java 的核心用法
第一步:进入含 .java 源文件的目录,例如 D:\code\HelloWorld.java。
第二步:执行 javac HelloWorld.java —— 这会生成同名 .class 文件;若报错“找不到符号”,检查类名是否与文件名完全一致(包括大小写)。
第三步:执行 java HelloWorld —— 注意这里不加 .class 后缀,也不写路径;【如果提示“找不到或无法加载主类”,90% 是当前目录下没有 HelloWorld.class,或类声明了 package 但没按包结构组织目录】。
立即学习“Java免费学习笔记(深入)”;
第四步:带参数运行:如 java HelloWorld arg1 arg2,main 方法 String[] args 就能接收到这两个字符串。
打包与解包:jar 命令的实用组合
方法一:把当前目录所有 .class 打成可运行 jar
执行 jar -cfe MyApp.jar HelloWorld *.class,其中 -c 表示创建,-f 指定输出文件名,-e 指定入口类(含 main 方法的类),必须是类名全称(无 .class 后缀)。
方法二:查看 jar 包内容
执行 jar -tf MyApp.jar,快速确认 class 文件是否在根目录或正确包路径下;若看到 com/example/HelloWorld.class 却用 java -jar MyApp.jar 报错,说明 MANIFEST.MF 缺少 Main-Class 属性。
方法三:解压 jar 到当前目录
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
执行 jar -xf MyApp.jar,解压后可直接修改 class 或配置文件再重打包;【不要用 Windows 右键解压,会破坏 META-INF/MANIFEST.MF 的换行符格式,导致 jar -x 失败】。
调试与诊断:jdb、jps、jstat 实战指令
① 启动被调试程序:先加参数运行 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 HelloWorld,开启远程调试端口。
② 启动 jdb 客户端:新开终端执行 jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=5005,连接成功后输入 run 启动程序。
③ 查看 Java 进程:执行 jps -l,列出所有 Java 进程及其完整主类路径;若只显示 PID 没有类名,说明进程未启用 JMX 或被安全策略限制。
④ 监控 GC 情况:执行 jstat -gc 12345 1000 5,其中 12345 是 jps 查到的 PID,1000 表示每秒刷新一次,5 表示共打印 5 行;重点关注 S0C/S1C(幸存区容量)、EC(伊甸园区容量)、OGC(老年代容量)是否稳定,突增突降可能意味着内存泄漏。
文档与反编译:javadoc 和 javap 快速上手
生成项目 API 文档:在源码根目录执行 javadoc -d docs -sourcepath src -subpackages com.example,-d 指定输出目录,-sourcepath 指向源码路径,-subpackages 自动包含子包;【若报错“编码GBK的不可映射字符”,加参数 -encoding UTF-8 -docencoding UTF-8】。
查看字节码结构:执行 javap -c -v HelloWorld,-c 显示汇编指令,-v 输出详细信息(常量池、字段表、方法表);想确认某方法是否被内联,重点看 Code 属性里的 line number table 和 stack map table。
交互式开发:jshell 的高效用法
启动 jshell:直接输入 jshell,进入交互环境;首次启动会自动导入 java.lang.*、java.io.* 等常用包。
定义变量并立即使用:输入 int x = 42; 回车 → 系统返回 x ==> 42;接着输 x * 2 回车 → 得到 $2 ==> 84。
加载外部代码:执行 /open MyUtils.java,jshell 会自动编译并导入该文件中所有 public 类和方法;之后可直接调用 MyUtils.doSomething()。
退出:输入 /exit 或按 Ctrl+D。

















