javac编译Java源文件需确保文件名与public类名一致且大小写敏感,有package时须按包结构组织目录并从根目录执行;java运行时必须用全限定类名且-cp参数须置于类名前;javadoc生成API文档需用/* /注释并指定输出目录;jar打包需含正确MANIFEST.MF;jps/jinfo用于查进程和JVM信息。

想在命令行里编译Java代码、查看正在运行的Java进程、生成API文档或打包成JAR文件,却不知道该用哪个JDK自带工具、怎么写参数、为什么报错——这篇手册直接告诉你每条指令的真实用法和关键陷阱。
编译Java源文件:javac最简用法
第一步:确保你有一个合法的.java文件,类名必须与文件名完全一致,且public类只能有一个;【文件名拼错或大小写不匹配会导致“类找不到”错误】
第二步:打开终端(CMD/PowerShell/Terminal),cd进入.java文件所在目录。
第三步:执行 javac Hello.java → 生成 Hello.class 文件。这一步操作起来很简单,但注意不要加任何后缀或路径修饰,javac默认只处理当前目录下的源文件。
立即学习“Java免费学习笔记(深入)”;
第四步:如果源文件用了package声明(比如package com.example;),就必须按包结构组织目录,例如把Hello.java放在com/example/子目录下,再从com上级目录执行 javac com/example/Hello.java。
运行编译后的程序:java命令避坑指南
java命令不认.java也不认.class后缀,只认类名——而且必须是包含main方法的public类的全限定名(带包名)。
方法一:无包结构时,直接 java Hello(前提是Hello.class在当前目录,且Hello类是public并含public static void main(String[] args))。
方法二:有包结构时,必须在包根目录执行,例如类声明为package org.demo;,文件路径是org/demo/App.class,则cd到org上级目录,运行 java org.demo.App。
方法三:指定类路径运行,适用于.class分散或依赖外部jar时:java -cp ".;lib/some.jar" org.demo.App(Windows用分号,Mac/Linux用冒号)。
【-cp参数必须写在类名前面,写在后面会被当作main方法的args参数,导致“找不到主类”】
生成API文档:javadoc快速上手
javadoc工具能从源码注释自动生成HTML格式文档,但只有用/** ... */写的类、方法、字段注释才会被提取。
基础用法:javadoc -d doc MyUtils.java → 在当前目录生成doc子目录,里面是完整的网页文档。
带包结构时,必须按目录层级运行:假设MyUtils.java位于src/com/example/,则cd src后执行 javadoc -d ../api com.example.MyUtils。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
常用增强参数:-author显示作者标签、-version显示版本标签、-windowtitle “我的工具库”自定义浏览器标题栏文字。
打包成可执行JAR:jar命令实操
第一步:确保所有.class文件已就位,包括主类和依赖类,推荐先用find或ls确认目录结构。
第二步:创建清单文件MANIFEST.MF,内容至少包含一行:Main-Class: com.example.Launcher(注意末尾换行,且类名必须带完整包路径)。
第三步:执行 jar cfm myapp.jar MANIFEST.MF *.class → c表示创建,f指定输出文件名,m关联清单文件。
第四步:验证是否成功:jar -tf myapp.jar 查看包内文件列表;java -jar myapp.jar 测试能否启动。
【MANIFEST.MF文件必须保存为UTF-8无BOM编码,否则Windows下运行会提示“无效的MANIFEST.MF”】
查Java进程与调试信息:jps和jinfo实战
jps是最轻量的Java进程查看器,比ps aux | grep java快得多,且能准确识别JVM进程。
基础用法:jps → 列出本机所有Java进程PID和主类名(如12345 MyApp)。
加-l参数显示完整主类全限定名,加-q只输出PID,适合脚本调用。
jinfo用于动态读取JVM启动参数和系统属性,无需重启进程。
查看某进程的全部JVM参数:jinfo -flags 12345(PID替换成实际数字)。
查看某进程的系统属性:jinfo -sysprops 12345 → 输出类似java.home=/usr/lib/jvm/jdk-17的键值对。
注意:jinfo对某些JVM版本或安全策略受限的进程可能返回“Unable to get system properties”,此时需检查进程是否以相同用户权限运行。

















