1、javac

javac用来编译.java文件的。常用格式如下所示:

javac -d destdir srcfile

-d destdir:指定存放编译生成的 .class 文件的路径。如果想省事一点,则使用当前目录即可,当前目录可以用"."来表示,即:javac -d . srcfile。

如果选项 -d 省略,虽然也是在当前目录下生成 .class 文件,但是不会生成包文件夹。例如下面的代码:

package cn.mybatis;

public class Test
{
    public static void main(String[] args)
    {
        System.out.print("Hello World!");
    }
}

1.1 不带 -d

C:\Users\mybatis>javac Test.java

直接生成 Test.class 文件

1.2 不带 -d

C:\Users\mybatis>javac -d . Test.java

先创建目录 C:Usersmybatiscnmybatis,然后生成 Test.class 文件。

2、java

执行该字节码文件,格式是:java 类的全称。例如执行上述的 Test.class 文件的命令是:

C:\Users\mybatis>java  cn.mybatis.Test

Hello World!

注意:类的全称,而不是class的文件名,不需要带.class后缀。另外,class文件的存放地址是遵照类的包层次。也就是说,javac Test.java 可以在当下目录生成 Test.class 文件,但是 java Test 是无法
执行此class文件的,必须把此class文件放到 C:Usersmybatiscnmybatis 下才能执行。所以,就必须要求编译时使用 -d 选项,否则需要手动建立包层次文件夹。

3、javap

javap 主要用于帮助开发者深入了解 Java 编译器的机制,主要选项有:-c,用于分解方法代码,即显示每个方法具体的字节码,如下所示:

C:\Users\mybatis>javap -c cn.mybatis.Test

Compiled from "Test.java"

public class cn.mybatis.Test {
  public cn.mybatis.Test();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String Hello World!
       5: invokevirtual #4                  // Method java/io/PrintStream.print:(Ljava/lang/String;)V
       8: return
}

标签: none

添加新评论