订阅博客
收藏博客
微博分享
QQ空间分享

Java中javac、java、javap使用详解(java编译命令)

频道:技术分享 标签:菜鸟程序员工作随笔 时间:2016年04月07日 浏览:2244次 评论:1条

最近一直在复习java基础,这里就记录对于一个类文件如何编译、运行、反编译的,让自己加深一下印象!首先我们来写一个简单的JavaTest方法,大致如下:

package com.cuiyongzhi.io;

public class JavaTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        int i=0,j=1;
        int n=i+j;
        System.out.println("n================"+n);
	}

}

然后将我们的这个JavaTest.java放入到c盘根目录下,后面我们用javac、java、javap进一步的去了解和运行这个方法的执行步骤!

①javac——负责.java文件的编译

首先当我们在cmd中输入javac的时候我们可以看到很多的提示信息如下,但是我这里说的只是对.java文件的编译命令!

4.png

javac对.java文件的编译命令格式如下:

javac -d destdir srcFile
  • -d destdir是用来指定存放编译生成的.class文件的路径。(若此选项省略,那么默认在当前目录下生成.class文件,并且没有生成包文件夹;当前目录可以用“.”来表示,即:javac -d . srcFile;添加-d选项除了可以指定编译生成的.class文件的路径外,最大的区别是可以将源文件首行的package关键字下的包名在当前路径下生成文件夹)

  • srcFile是源文件.java文件的路径

之前我们是将JavaTest.java放在c盘根目录下,而且我也希望我们生成的class文件也是放入在C盘中,所以我们的编译命令可以如下:

javac -d C:\\ C:\\JavaTest.java

最后执行之后我们可以看到如下结果:

5.png

②前面第一步我们已经通过javac编译过java文件了,并且编译之后class的目录在C:\com\cuiyongzhi\io,在这里我们可以通过java运行class结果如下:

2.png

③javap——可以用于帮助开发者深入了解Java编译器的机制

  • -c 分解方法代码,即显示每个方法具体的字节码

  • -public | protected | package | private 用于指定显示哪种级别的类成员

  • -verbose 指定显示更进一步的详细信息

我们可以查看我们这个编译的Class的相关信息,只需要输入如下命令:

javap -c com/cuiyongzhi/io/JavaTest

我们可以看到编译过的被线程一步步调用的指令(相关知识可以阅读:【我是一个线程】 http://cuiyongzhi.com/index.php/post/65.html 和【我是一个java class】http://cuiyongzhi.com/index.php/post/68.html  ),如下图:

3.png

简单的对javac、java、javap的命令讲解就到这里了,感谢你的翻阅,如有疑问可以留言交流讨论!


文章评论

  • 访客
    2016-08-24 12:49:15 回复该评论
    阿司法局阿斯蒂芬阿斯顿发的说法是打发士大夫

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信