Skip to content

javac

Posted on:November 29, 2022 at 01:06 PM

背景

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


 $  java --list-modules
...
jdk.attach@17.0.5
jdk.charsets@17.0.5
jdk.compiler@17.0.5
...

我的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

正常执行

相关阅读