用多了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[]); }