Java工具:javac、javap、jmap、jhat、jstack、jstat
简介
我们平常编写的Java代码需要先被编译为二进制的字节码,例如Hello.java源文件会被编译为Hello.class字节码文件,然后才能被Java虚拟机执行。
在此之前一般都是用Eclipse直接进行Java开发了,命令行用的非常少,基本上也就是在知道javac后面跟上.java文件。现在接触到了更多的Java知识,有时候需要远程调试Java程序,或者需要查看.class文件,发现javac这个工具有很多需要关注和学习的地方。
javac在$JAVA_HOME/bin中,一般在安装好jdk,并配置好环境变量后就可以直接使用了。
说明
有两种方法可将源代码文件名传递给 javac
如果源文件数量少,在命令行上列出文件名即可。
如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。然后在 javac 命令行中使用该列表文件名,文件名前冠以 @ 字符。
源代码文件名称必须含有 .java 后缀,类文件名称必须含有 .class 后缀,源文件和类文件都必须有识别该类的根名。例如,名为 MyClass 的类将写在名为 HelloWorld.java的源文件中,并被编译为字节码类文件 HelloWorld.class。
内部类定义产生附加的类文件。这些类文件的名称将内部类和外部类的名称结合在一起,例如 HelloWorld$InnerHelloworld.class。
应当将源文件安排在反映其包树结构的目录树中。例如,如果将所有的源文件放在 /workspace 中,那么 com.zhao.test.HelloWorld 的代码应该在 \workspace\com\zhao\test\HelloWorld.java 中。
缺省情况下,编译器将每个类文件与其源文件放在同一目录中。可用 -d 选项(请参阅后面的选项)指定其它目标目录。
常用参数
下面介绍几个常用或者说自己会用的参数。
用法: javac <options> <source files>其中, 可能的选项包括: -g 生成所有调试信息,-g参数在debug的时候会使用,特别是在使用Eclipse的进行debug的时候,里面的一些选项其实对应的就是-g参数。 -g:none 不生成任何调试信息 -g:{lines,vars,source} 只生成某些调试信息 -nowarn 不生成任何警告 -verbose 输出有关编译器正在执行的操作的消息 -classpath <路径> 指定查找用户类文件和注释处理程序的位置 -cp <路径> 指定查找用户类文件和注释处理程序的位置 -d <目录> 指定放置生成的类文件的位置 -s <目录> 指定放置生成的源文件的位置 -encoding <编码> 指定源文件使用的字符编码 -source <发行版> 提供与指定发行版的源兼容性 -target <发行版> 生成特定 VM 版本的类文件 -version 版本信息 -help 输出标准选项的提要