Skip to main content

javac

· 2 min read

背景

  • 了解java 编译过程
  • 使用java的module调用javac

java的编译命令

在java jdk9 开始,拥有了module 系统 ,jdk里面内部的库也拆分成为不同的module

java的编译前端命令是javac ,实际上调用的是jdk.compiler 这个module下面的类com.sun.tools.javac.Main

也就是说javac 这个命令和 java --module jdk.compiler/com.sun.tools.javac.Main 这个命令是一致的

java前端

列出所有的module

我的jdk现在是jdk17 , 可以看到其中有一个jdk.compiler 的module , 这个就是java编译器前端

使用module 方式调用

先创建一个hello world

vim com/Hello.java

内容如下:

package com;
public class Hello{
public static void main(String [] argc){

System.out.print(argc.length);

}
}

然后使用以下命令编译:

java  --module   jdk.compiler/com.sun.tools.javac.Main  com/Hello.java

获取class 文件:

$tree com
com
├── Hello.class
└── Hello.java

执行这个hello world 的demo:

$ java com.Hello
0

正常执行

相关阅读