Java常用命令

  用多了IDE后,可能很多人都忘了用java自带的命令,但是这些命令是很有用的,下面让我来介绍一些:

  appletviewer:

    这个命令是的作用就是帮助我们查看applet小程序。

    首先你必须有一个applet小程序的代码,下面我们写了一个TestApplet.java:

import javax.swing.*;
import java.awt.*;
/*
    <APPLET  code=TestApplet.class   width=200  height=300></APPLET>
*/
public class TestApplet extends JApplet {
    public void init() {
        getContentPane().add(new JLabel("Applet!"));
    }
} 

    这个代码很简单,我们还需要将它编译成class文件,生成TestApplet.class,一个很关键的点就是我们必须写进那个注释的内容,定义的是一个标签,然后我们使用:

appletviewer TestApplet

    使用该命令就可以看到一个小程序出现了,除此之外,还是用该命令搭配html文件,这个文件中也是需要有applet标签的:

<!doctype html>
<html>
    <head></head>
    <body>
        <APPLET code=TestApplet.class   width=200  height=300></APPLET>
    </body>
</html>

使用下命令也可以看到相同的效果:

appletviewer TestApplet.html

  javac:

    这个命令我们初学的时候很经常用,但是我们只是用到了很基础的部分,有些额外的选项还是值得我们去利用的。

用法: 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                    出现警告时终止编译
  @<文件名>                     从文件读取选项和文件名 

  用了javac命令之后对一个文件进行编译之后,可以生成class文件,利用-verbose选项输出有关编译器方面的消息,下面我写了一个简单的Hello程序进行测试,测试结果如下:

  java:

    java是用来执行class文件的,若你的类中没有可以执行的main方法,就不能执行了。

用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -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>
                  使用指定的图像显示启动屏幕

  演示一个简单的java命令使用:

  jar:

    jar命令主要是用于打jar包,很多人很说用c或者c++可以生成exe文件,双击就运行,用这个命令生成jar后,也可以双击运行,只不过前提是你必须配置了java的运行环境。

用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项包括:
    -c  创建新的归档文件
    -t  列出归档目录
    -x  从档案中提取指定的 (或所有) 文件
    -u  更新现有的归档文件
    -v  在标准输出中生成详细输出
    -f  指定归档文件名
    -m  包含指定清单文件中的清单信息
    -e  为捆绑到可执行 jar 文件的独立应用程序
        指定应用程序入口点
    -0  仅存储; 不使用情况任何 ZIP 压缩
    -M  不创建条目的清单文件
    -i  为指定的 jar 文件生成索引信息
    -C  更改为指定的目录并包含其中的文件
如果有任何目录文件, 则对其进行递归处理。
清单文件名, 归档文件名和入口点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。

  示例:将Hello.class和World.class文件打包进HelloWorld.jar

I:\code\java\20140330>jar -cvf HelloWorld.jar Hello.class World.class
已添加清单
正在添加: Hello.class(输入 = 401) (输出 = 275)(压缩了 31%)
正在添加: World.class(输入 = 409) (输出 = 282)(压缩了 31%)

  javadoc:

    javadoc命令主要是生成帮助文档。

用法: javadoc [options] [packagenames] [sourcefiles] [@files]
-overview <file>          从 HTML 文件读取概览文档
-public                   仅显示 public 类和成员
-protected                显示 protected/public 类和成员 (默认值)
-package                  显示 package/protected/public 类和成员
-private                  显示所有类和成员
-help                     显示命令行选项并退出
-doclet <class>            通过替代 doclet 生成输出
-docletpath <path>        指定查找 doclet 类文件的位置
-sourcepath <pathlist>    指定查找源文件的位置
-classpath <pathlist>     指定查找用户类文件的位置
-exclude <pkglist>        指定要排除的程序包列表
-subpackages <subpkglist> 指定要递归加载的子程序包
-breakiterator            计算带有 BreakIterator 的第一个语句
-bootclasspath <pathlist> 覆盖由引导类加载器所加载的
                           类文件的位置
-source <release>         提供与指定发行版的源兼容性
-extdirs <dirlist>        覆盖所安装扩展的位置
-verbose                  输出有关 Javadoc 正在执行的操作的信息
-locale <name>            要使用的区域设置, 例如 en_US 或 en_US_WIN
-encoding <name>          源文件编码名称
-quiet                    不显示状态消息
-J<flag>                  直接将 <flag> 传递到运行时系统
-X                        输出非标准选项的提要

通过标准 doclet 提供:
-d <directory>                    输出文件的目标目录
-use                              创建类和程序包用法页面
-version                          包含 @version 段
-author                           包含 @author 段
-docfilessubdirs                  递归复制文档文件子目录
-splitindex                       将索引分为每个字母对应一个文件
-windowtitle <text>               文档的浏览器窗口标题
-doctitle <html-code>             包含概览页面的标题
-header <html-code>               包含每个页面的页眉文本
-footer <html-code>               包含每个页面的页脚文本
-top    <html-code>               包含每个页面的顶部文本
-bottom <html-code>               包含每个页面的底部文本
-link <url>                       创建指向位于 <url> 的 javadoc 输出的链接
-linkoffline <url> <url2>         利用位于 <url2> 的程序包列表链接至位于 <url> 的文档
-excludedocfilessubdir <name1>:.. 排除具有给定名称的所有文档文件子目录。
-group <name> <p1>:<p2>..         在概览页面中, 将指定的程序包分组
-nocomment                        不生成说明和标记, 只生成声明。
-nodeprecated                     不包含 @deprecated 信息
-noqualifier <name1>:<name2>:...  输出中不包括限定符的列表。
-nosince                          不包含 @since 信息
-notimestamp                      不包含隐藏时间戳
-nodeprecatedlist                 不生成已过时的列表
-notree                           不生成类分层结构
-noindex                          不生成索引
-nohelp                           不生成帮助链接
-nonavbar                         不生成导航栏
-serialwarn                       生成有关 @serial 标记的警告
-tag <name>:<locations>:<header>  指定单个参数定制标记
-taglet                           要注册的 Taglet 的全限定名称
-tagletpath                       Taglet 的路径
-Xdocrootparent <url>             将文档注释中出现的所有后跟 /.. 的 @docRoot 替换为 <url>
-charset <charset>                用于跨平台查看生成的文档的字符集。
-helpfile <file>                  包含帮助链接所链接到的文件
-linksource                       以 HTML 格式生成源文件
-sourcetab <tab length>           指定源中每个制表符占据的空格数
-keywords                         使程序包, 类和成员信息附带 HTML 元标记
-stylesheetfile <path>            用于更改生成文档的样式的文件
-docencoding <name>               输出编码名称

  示例:

I:\code\java\20140330>javadoc Hello.java World.java
正在加载源文件Hello.java...
正在加载源文件World.java...
正在构造 Javadoc 信息...
标准 Doclet 版本 1.7.0_17
正在构建所有程序包和类的树...
正在生成\Hello.html...
正在生成\World.html...
正在生成\package-frame.html...
正在生成\package-summary.html...
正在生成\package-tree.html...
正在生成\constant-values.html...
正在构建所有程序包和类的索引...
正在生成\overview-tree.html...
正在生成\index-all.html...
正在生成\deprecated-list.html...
正在构建所有类的索引...
正在生成\allclasses-frame.html...
正在生成\allclasses-noframe.html...
正在生成\index.html...
正在生成\help-doc.html...

  javah:

    这个命令主要是用于生成头文件,可以用于jni,即是在java中调用c或者c++的代码。

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

  native2ascii:

    这个命令是将将含有本地编码字符(既非 Latin1 又非 Unicode 字符)的文件转换为 Unicode 编码字符的文件。

I:\code\java\20140330>native2ascii
你好
\u4f60\u597d

  serialver:

    该命令的作用返回serialverUID。

用法: serialver [-classpath 类路径] [-show] [类名称...]

  运用该命令的类必须是可序列化的。

  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

  示例:

I:\code\java\20140330>javap Hello.class
Compiled from "Hello.java"
public class Hello {
  public Hello();
  public static void main(java.lang.String[]);
}

posted on 2014-03-30 14:46  进击的Ray_xujianguo  阅读(5506)  评论(0编辑  收藏  举报

导航