学而实习之 不亦乐乎

Java常用命令

2020-08-02 11:17:59

1、javac 

将文件编译成.class文件 
用法: javac <options> <source files>

其中, 可能的选项包括:
 -g             生成所有调试信息
 -g:none          不生成任何调试信息
 -g:{lines,vars,source}   只生成某些调试信息
 -nowarn          不生成任何警告
 -verbose          输出有关编译器正在执行的操作的消息
 -deprecation        输出使用已过时的 API 的源位置
 -classpath <路径>      指定查找用户类文件和注释处理程序的位置
 -cp <路径>         指定查找用户类文件和注释处理程序的位置
 -sourcepath <路径>     指定查找输入源文件的位置
 -bootclasspath <路径>    覆盖引导类文件的位置
 -extdirs <目录>       覆盖所安装扩展的位置
 -endorseddirs <目录>    覆盖签名的标准路径的位置
 -proc:{none,only}     控制是否执行注释处理和/或编译。
 -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
 -processorpath <路径>    指定查找注释处理程序的位置
 -d <目录>          指定放置生成的类文件的位置
 -s <目录>          指定放置生成的源文件的位置
 -implicit:{none,class}   指定是否为隐式引用文件生成类文件
 -encoding <编码>       指定源文件使用的字符编码
 -source <发行版>       提供与指定发行版的源兼容性
 -target <发行版>       生成特定 VM 版本的类文件
 -version          版本信息
 -help            输出标准选项的提要
 -A关键字[=值]        传递给注释处理程序的选项
 -X             输出非标准选项的提要
 -J<标记>           直接将 <标记> 传递给运行时系统
 -Werror           出现警告时终止编译
 @<文件名>          从文件读取选项和文件名

2、java 

执行 .class文件,若类中没有main函数,则不能执行。用法如下

(执行类):java [-options] class [args...]
(执行 jar 文件):java [-options] -jar jarfile [args...]

其中选项包括:
  -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>
         使用指定的图像显示启动屏幕

3、jar

Java归档工具,主要用于打包jar文件 
用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 
补充说明:jar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。然而, 设计jar的主要目的是便于将java applet或应用程序打包成单个归档文件。将applet或应用程序的组件(.class 文件、图像和声音)合并成单个归档文件时,可以用java代理(如浏览器)在一次HTTP事务处理过程中对它们进行下载,而不是对每个组件都要求一个新连 接。这大大缩短了下载时间。jar还能压缩文件,从而进一步提高了下载速度。此外,它允许applet的作者对文件中的各个项进行签名,因而可认证其来 源。jar工具的语法基本上与tar命令的语法相同。

命令选项
  -c 在标准输出上创建新归档或空归档。
  -t 在标准输出上列出内容表。
  -x[file] 从标准输入提取所有文件,或只提取指定的文件。如果省略了file,则提取所有文件;否则只提取指定文件。
  -f 第二个参数指定要处理的jar文件。在-c(创建)情形中,第二个参数指的是要创建的jar文件的名称(不是在标准输出上)。在-t(表(或-x(抽取)这两种情形中,第二个参数指定要列出或抽取的jar文件。
  -v 在标准错误输出设备上生成长格式的输出结果。
  -m 包括指定的现有清单文件中的清单信息。用法举例:“jar cmf myManifestFile myJarFile *.class”
    -e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点
  -0 只储存,不进行 ZIP 压缩。
  -M 不创建项目的清单文件。
    -i 为指定的 jar 文件生成索引信息
   -u 通过添加文件或更改清单来更新现有的 JAR 文件。例如:“jar -uf foo.jar foo.class”将文件 foo.class 添加到现有的JAR文件foo.jar中,而“jar umf manifest foo.jar”则用manifest中的信息更新foo.jar的清单。
  -C 在执行 jar 命令期间更改目录。例如:“jar -uf foo.jar -C classes *”将classes目录内的所有文件加到foo.jar中,但不添加类目录本身。

如果有任何目录文件, 则对其进行递归处理。
清单文件名, 归档文件名和入口点名称的指定顺序与 'm', 'f' 和 'e' 标记的指定顺序相同。

程序示例
  1:将当前目录下所有CLASS文件打包成新的JAR文件:
  jar cf file.jar *.class
  2:显示一个JAR文件中的文件列表
  jar tf file.jar
  3:将当前目录下的所有文件增加到一个已经存在的JAR文件中
  jar cvf file.jar *

4、javadoc 

Java API文档生成器从Java源文件生成API文档HTML页。主要用于生成帮助文档。 
用法: javadoc [options] [packagenames] [sourcefiles] [@files]
其中[ 包名 ]为用空格分隔的一系列包的名字,包名不允许使用通配符,如(*)。[ 源文件名 ]为用空格分隔的一系列的源文件名,源文件名可包括路径和通配符,如(*)。[ @files ]是以任何次序包含包名和源文件的一个或多个文件。
补充说明
  Javadoc解析Java源文件中的声明和文档注释,并产生相应的HTML页缺省),描述公有类、保护类、内部类、接口、构造函数、方法和域。
   在实现时,Javadoc要求且依赖于java编译器完成其工作。Javadoc调用部分javac编译声明部分,忽略成员实现。它建立类的内容丰富的 内部表示,包括类层次和“使用”关系,然后从中生成HTML。Javadoc还从源代码的文档注释中获得用户提供的文档。
  当Javadoc建立其内部文档结构时,它将加载所有引用的类。由于这一点,Javadoc必须能查找到所有引用的类,包括引导类、扩展类和用户类。

  -overview i>path/filename 指定javadoc应该从path/filename所指定的“源”文件中获取概述文档,并将它放到概述页中(overview- summary.html)。其中path/filename 是相对于-sourcepath的相对路径名。
  -public 只显示公有类及成员。
  -protected 只显示受保护的和公有的类及成员。这是缺省状态。
  -package 只显示包、受保护的和公有的类及成员。
  -private 显示所有类和成员。
  -help 显示联机帮助,它将列出这些javadoc和doclet命令行选项。
   -doclet class 指定启动用于生成文档的docle 的类文件。该doclet定义了输出的内容和格式。如果未使用-doclet选项,则javadoc使用标准doclet生成缺省HTML格式。该类必须 包含start(Root)法。该启动类的路径由 -docletpath选项定义。
  -docletpath classpathlist 指定doclet类文件的路径,该类文件用-doclet选项指定。如果doclet已位于搜索路径中,则没有必要使用该选项。
  -sourcepath sourcepathlist  当将包名传递到 javadoc命令中时,指定定位源文件(.java)的搜索路径。注意只有当用 javadoc命令指定包名时才能使用sourcepath选项 -- 它将不会查找传递到javadoc命令中的.java文件。如果省略-sourcepath,则javadoc使用类路径查找源文件。
  -classpath classpathlist 指定javadoc将在其中查找引用类的路径 -- 引用类是指带文档的类加上它们引用的任何类。Javadoc将搜索指定路径的所有子目录。classpathlist可以包括多个路径,彼此用逗号分隔。
   -1.1 生成具有用Javadoc 1.1生成的文档的外观和功能的文档。也就是说,页的背景为灰色,用图像做页眉,使用bullet列表而不是表格,具有单层目的目录结构,不包含继承 API,不使?*** TML框架,并且不支持内部类。该选项还自动将索引分割成每个字母一个文件。如果想要这种外观,则该选项比javadoc 1.1优越之处等于修正了一些错误。
  -bootclasspath classpathlist 指定自举类所在路径。它们名义上是Java平台类。这个bootclasspath是Javadoc将用来查找源文件和类文件的搜索路径的一部分。在 classpathlist中用冒号(:)分隔目录。
    -exclude <pkglist>    指定要排除的程序包列表
    -subpackages <subpkglist> 指定要递归加载的子程序包
    -breakiterator      计算带有 BreakIterator 的第一个语句

    -source <release>     提供与指定发行版的源兼容性
    -quiet          不显示状态消息
    -X            输出非标准选项的提要
  -extdirs dirlist 指定扩展类所在的目录。它们是任何使用Java扩展机制的类。这个 extdirs是Javadoc将用来查找源文件和在文件的搜索路径的一部分。在dirlist中用冒号(:)分隔目录。
  -verbose 在javadoc运行时提供更详细的信息。不使用verbose选项时,将显示加载源文件、生成文档(每个源文件一条信息)和排序的信息。verbose选项导致打印额外的信息,指定解析每个java源文件的毫秒数。
  -locale language_country_variant 指定javadoc在生成文档时使用的环境。
  -encoding name 指定源文件编码名,例如EUCJIS/SJIS。如果未指定该选项,则使用平台缺省转换器。
  -J[flag] 将flag直接传递给运行javadoc的运行时系统java。注意在J和flag之间不能有空格。
标准 Doclet 提供的选项
  -d directory 指定javadoc保存生成的HTML件的目的目录。省略该选项将导致把文件保存到当前目录中。其中directory可以是绝对路径或相对当前工作目录的相对路径。
  -use 对每个带文档类和包包括一个“用法”页。该页描述使用给定类或包的任何 API 的包、类、方法、构造函数和域。对于给定类 C,使用类 C 的任何东西将包括 C 的子类、声明为 C 的域、返回 C 的方法以及具有 C 类型参数的方法和构造函数。
  -version 在生成文档中包括 @version 文本。缺省地将省略该文本。
  -author 在生成文档中包括 @author 文本。
  -splitindex 将索引文件按字母分割成多个文件,每个字母一个文件,再加上一个包含所有以非字母字符开头的索引项的文件。
  -windowtitle[title] 指定放入 HTML

5、javah 

主要是用于生成头文件。
 
用法:
 javah [options] <classes>
其中, [options] 包括:
 -o <file>        输出文件 (只能使用 -d 或 -o 之一)
 -d <dir>         输出目录
 -v -verbose       启用详细输出
 -h --help -?      输出此消息
 -version         输出版本信息
 -jni           生成 JNI 样式的标头文件 (默认值)
 -force          始终写入输出文件
 -classpath <path>    从中加载类的路径
 -bootclasspath <path>  从中加载引导类的路径
<classes> 是使用其全限定名称指定的

6、javap 

反编译器,显示编译类中可以访问的方法和数据。
 
Usage: javap <options> <classes>
where possible options include:
 -help --help -?    Print this usage message
 -version         Version information
 -v -verbose       Print additional information
 -l            Print line number and local variable tables
 -public         Show only public classes and members
 -protected        Show protected/public classes and members
 -package         Show package/protected/public classes
              and members (default)
 -p -private       Show all classes and members
 -c            Disassemble the code
 -s            Print internal type signatures
 -sysinfo         Show system info (path, size, date, MD5 hash)
              of class being processed
 -constants        Show static final constants
 -classpath <path>    Specify where to find user class files
 -bootclasspath <path>  Override location of bootstrap class files

7.rmic

功能说明:rmic 为远程对象生成 stub 和 skeleton。

语法:rmic [ options ] package-qualified-class-name(s)

补充说明:
  rmic 编译器根据编译后的 Java 类(含有远程对象实现)名,为远程对象生成 stub 和 skeleton(远程对象是指实现 java.rmi.Remote 接口的对象)。在 rmic 命令中所给的类必须是经 javac 命令成功编译且是完全包限定的类。

命令选项
  -classpath[路径] 指定 rmic 用于查询类的路径。如果设置了该选项,它将覆盖缺省值或 CLASSPATH 环境变量。目录用冒号分隔。
  -d[目录] 指定类层次的根目录。此选项可用来指定 stub 和 skeleton 文件的目标目录。
  -depend 使编译器考虑重新编译从其它类引用的类。 一般来说,它只重新编译从源代码引用的遗漏或过期的类。
  -g 允许生成调试表格。调试表格含有行号和局部变量的有关信息,即 Java 调试工具所使用的信息。缺省情况下,只生成行号。
  -J 与 -D 选项联用,它将紧跟其后的选项( -J 与 -D 之间无空格)传给 java 解释器。
  -keepgenerated 为 stub 和 skeleton 文件保留所生成的 .java 源文件,并将这些源文件写到与 .class 文件相同的目录中,如果要指定目录,则使用 -d 选项。
  -nowarn 关闭警告。如果使用该选项,则编译器不输出任何警告信息。
  -show 显示 rmic 编译器的 GUI(图形用户界面)。输入一个或多个包限定类名(以空格分隔),并按回车键或“显示”按钮,创建 stub 和 skeleton。
  -vcompat (缺省值)创建与 JDK 1.1 和 1.2 stub 协议版本都兼容的 stub 和 skeleton。
  -verbose 使编译器和链接器输出关于正在编译哪些类和正在加载哪些类文件的信息。
  -v1.1 创建 JDK 1.1 stub 协议版本的 stub 和 skeleton。
  -v1.2 只创建 JDK 1.2 stub 协议版本的 stub。

8.rmid

功能说明:rmid 启动激活系统守护进程,以便能够在 Java 虚拟机上注册和激活对象。
语法:rmid [-port port] [-log dir]
补充说明:rmid 工具启动激活系统守护进程。必须先启动激活系统守护进程,才能向激活系统注册可被激活的对象或在 Java 虚拟机上激活可被激活的对象。

命令选项
  -C<某些命令行选项> 指定一个选项,在创建每个 rmid 的子守护进程(激活组)时,该选项以命令行参数的形式传给该子守护进程。
  -log[目录] 指定目录的名称,激活系统守护进程在该目录中写入其数据库及相关信息。缺省状态下,将在执行 rmid 命令的目录中创建一个 log 目录。
  -port[端口] 指定 rmid 的注册服务程序所使用的端口。激活系统守护进程将 ActivationSystem 与该注册服务程序中的名称java.rmi.activation.ActivationSystem 捆绑在一起。
  -stop 停止 -port 选项所指定端口上的当前 rmid 调用。若未指定端口,则将停止在端口 1098 上运行的 rmid。

9.rmiregistry

功能说明:rmiregistry 命令可在当前主机的指定端口上启动远程对象注册服务程序。
语法:rmiregistry [port]
补充说明:
   rmiregistry 命令在当前主机的指定 port 上创建并启动远程对象注册服务程序。如果省略 port,则注册服务程序将在 1099 端口上启动。rmiregistry 命令不产生任何输出而且一般在后台运行。远程对象注册服务程序是自举命名服务。主机上的 RMI 服务器将利用它将远程对象绑定到名字上。客户机即可查询远程对象并进行远程方法调用。注册服务程序一般用于定位应用程序需调用其方法的第一个远程对象。该 对象反过来对各应用程序提供相应的支持,用于查找其它对象。
  java.rmi.registry.LocateRegistry 类的方法可用于在某台主机或主机和端口上获取注册服务程序操作。java.rmi.Naming 类的基于 URL 的方法将对注册服务程序进行操作,并可用于查询远程对象、将简单(字符串)名称绑定到远程对象、将新名称重新绑定到远程对象(覆盖旧绑定)、取消远程对象 的绑定以及列出绑定在注册服务程序上的 URL。

10.serialver

功能说明:serialver 命令返回 serialVersionUID。
语法:serialver [ 命令选项 ]
补充说明:serialver 以适于复制到演变类的形式返回一个或多个类的 serialVersionUID。不带参数调用时,它输出用法行。
命令选项
  -show 显示一个简单的用户界面。输入完整的类名并按回车键或“显示”按钮可显示 serialVersionUID。

11.jarsigner

功能说明:为 Java 归档 (JAR) 文件产生签名,并校验已签名的 JAR 文件的签名。
语法:
  jarsigner [ 命令选项 ] jar-file alias
  jarsigner -verify [ 命令选项 ] jar-file

补充说明:
  jarsigner 工具用于两个目的:
  1:为 Java 归档 (JAR) 文件签名
  2:校验已签名的 JAR 文件的签名和完整性

命令选项
  -keystore[url] 指定密钥仓库的 URL。缺省值是用户的宿主目录中的 .keystore 文件,它由系统属性“user.home”决定。
  -storetype[storetype] 指定要被实例化的密钥仓库类型。默认的密钥仓库类型是安全属性文件中 "keystore.type" 属性值所指定的那个类型,由 java.security.KeyStore 中的静态方法 getDefaultType 返回。
  -storepass[password] 指定访问密钥仓库所需的口令。这仅在签名(不是校验)JAR 文件时需要。在这种情况下,如果命令行中没有提供 -storepass 选项,用户将被提示输入口令。
  -keypass[password] 指定用于保护密钥仓库项(由命令行中指定的别名标出)的私钥的口令。使用 jarsigner 为 JAR 文件签名时需要该口令。如果命令行中没有提供口令,且所需的口令与密钥仓库的口令不同,则将提示用户输入它。
  -sigfile[file] 指定用于生成 .SF 和 .DSA 文件的基本文件名。
  -signedjar[file] 指定用于已签名的 JAR 文件的名称。
   -verify 如果它出现在命令行中,则指定的 JAR 文件将被校验,而不是签名。如果校验成功,将显示“jar verified”。如果试图校验未签名的 JAR 文件,或校验被不支持的算法(例如未安装 RSA 提供者时使用的 RSA)签名的 JAR 文件,则将有如下显示: "jar is unsigned. (signatures missing or not parsable)" 。
  -certs 如果它与 -verify 和 -verbose 选项一起出现在命令行中,则输出将包括 JAR 文件的每个签名人的证书信息。
  -verbose 如果它出现在命令行中,则代表“verbose”模式,它使 jarsigner 在 JAR 签名或校验过程中输出额外信息。
   -internalsf 过去,JAR 文件被签名时产生的 .DSA(签名块)文件包含一个同时产生的 .SF 文件(签名文件)的完整编码副本。这种做法已被更改。为了减小输出 JAR 文件的整个大小,缺省情况下 .DSA 文件不再包含 .SF 文件的副本。但是如果 -internalsf 出现在命令行中,将采用旧的做法。该选项主要在测试时有用;实际上不应使用它,因为这样将消除有用的优化。
  -sectionsonly 如果它出现在命令行中,则 JAR 文件被签名时生成的 .SF 文件(签名文件)将不包括含有整个清单文件的散列的头。它仅包含 与 JAR 中每个单独的源文件相关的信息和散列。该选项主要在测试时有用;实际上不应使用它,因为这样将消除有用的优化。
  -J [javaoption] 将指定的 javaoption 串直接传递到 Java 解释器。((jarsigner 实际上是解释器的一个 “wrapper”)。该选项不应含有任何空格。它有助于调整执行环境或内存使用。要获得可用的解释器选项的清单,可在命令行键入 java -h 或 java -X。

12.keytool

功能说明:管理由私钥和认证相关公钥的 X.509 证书链组成的密钥仓库(数据库)。还管理来自可信任实体的证书。
语法:keytool [ 命令 ]
补充说明:
  keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。

13.native2ascii

功能说明:将含有本地编码字符(既非 Latin1 又非 Unicode 字符)的文件转换为 Unicode 编码字符的文件。
语法:native2ascii [options] [inputfile [outputfile]]

补充说明:Java 编译器和其它 Java 工具只能处理含有 Latin-1 和/或 Unicode 编码(udddd 记号)字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和/或 Unicode 编码字符的文件。若省略 outputfile,则使用标准输出设备输出。此外,如果也省略 inputfile,则使用标准输入设备输入。

命令选项
  -reverse 执行相反的操作:将含 Latin-1 和/或 Unicode 编码字符的文件转换成含本地编码字符的文件。
  -encoding[encoding_name] 指定转换过程使用的编码名称。缺省的编码从系统属性 file.encoding 中得到。

14.appletviewer

功能说明:Java applet 浏览器。appletviewer 命令可在脱离万维网浏览器环境的情况下运行 applet。
语法:appletviewer [ threads flag ] [ 命令选项 ] urls ...

补充说明:appletviewer 命令连接到 url 所指向的文档或资源上,并在其自身的窗口中显示文档引用的每个 applet。注意:如果 url 所指向的文档不引用任何带有 OBJECT、EMBED 或 APPLET 标记的 applet,那么 appletviewer 就不做任何事情。

命令选项
  -debug 在 Java 调试器 jdb 中启动 appletviewer,使您可以调试文档中的 applet。

15.extcheck

功能说明:extcheck 检测目标 jar 文件与当前安装方式扩展 jar 文件间的版本冲突。
语法:extcheck [ -verbose ] targetfile.jar

补充说明:
    extcheck 实用程序检查指定 Jar 文件的标题和版本与 JDK TM 软件中所安装的扩展是否有冲突。在安装某个扩展前,可以用该实用程序查看是否已安装了该扩展的相同版本或更高的版本。

    extcheck 实用程序将 targetfile.jar 文件清单的 specification-title 和 specification-version 头与当前安装在扩展目录下所有 Jar 文件的相对应的头进行比较(缺省扩展目录为 jre/lib/ext)。extcheck 实用程序比较版本号的方式与 java.lang.Package.isCompatibleWith 方法相同。若未检测到冲突,则返回代码为 0。如果扩展目录中任何一个 jar 文件的清单有相同的 specification-title 和相同的或更新的 specification-version 号,则返回非零错误代码。如果 targetfile.jar 的清单中没有 specification-title 或 specification-version 属性,则同样返回非零错误代码。

命令选项
  -verbose 对扩展目录中的 Jar 文件进行检查时,列出文件。此外,还报告目标 jar 文件的清单属性及所有冲突的 jar 文件。