Java 常用命令
Javac 编译指令
# 语法格式
javac <options> <source files>
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-g 添加调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出编译时的正在执行的操作
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
version 版本信息
-help 输出标准选项的提要
-deprecation 输出使用已过时的 API 的源位置
-cp/-classpath <路径> 指定查找用户类文件,将覆盖 环境变量 CLASSPATH
-sourcepath <路径> 指定待编译文件的依赖文件
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
常用示例
# 文件结构
# /---test
# /---Hello.java
# /---test.java
# /---class
# 编译生成类文件
javac test.java
# 指定放置类文件路径
javac -d ./class/ test.java
Java 执行指令
# 语法格式
# 执行 class文件
java <参数> class [传入class的参数]
# 或 执行jar包
java <参数> -jar jarfile [传入class的参数]
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
-hotspot 是 "server" VM 的同义词 [已过时]
默认 VM 是 server.
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 ; 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<name>=<value>
设置系统属性
-verbose[:class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<value>
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
按指定的粒度启用断言
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:<libname>[=<options>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
按完整路径名加载本机代理库
-javaagent:<jarpath>[=<options>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:<imagepath>
使用指定的图像显示启动屏幕
常用示例
# 文件结构
# /---Hello
# /---Hello.java
# /---class
# /---Hello.class
# 执行java程序
java Hello
# 执行一个jar包程序
Jar 打包指令
# 语法格式
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
-c 创建新档案
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-m 包含指定清单文件中的清单信息
-n 创建新档案后执行 Pack200 规范化
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储; 不使用任何 ZIP 压缩
-P 保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含以下文件
# 如果任何文件为目录, 则对其进行递归处理。
# 清单文件名, 档案文件名和入口点名称的指定顺序
# 与 'm', 'f' 和 'e' 标记的指定顺序相同。
常用示例
# 文件结构
# /---Hello
# /---Hello.class
# 创建一个jar包
jar cvf Hello.jar Hello.class
# 创建一个jar包,并指定入口点
jar cvfe Hello.jar Hello Hello.class
Javap 反编译器
# 语法格式
javap <参数> <classes>
-help --help -? 输出此用法消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类
和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息 (路径, 大小, 日期, MD5 散列)
-constants 显示最终常量
-classpath <path> 指定查找用户类文件的位置
-cp <path> 指定查找用户类文件的位置
-bootclasspath <path> 覆盖引导类文件的位置
常用示例
# 反汇编
javap -c Hello.class
# 显示所有类和其成员
javap -p Hello.class