Main中的main方法是javac的入口。
main中内容很少,只有两段分支代码
if (args.length > 0 && args[0].equals("-Xjdb")) {
//....
} else{
System.exit(compile(args));
}
使用javac -Xjdb时会进入if部分,和调试有关,暂且不去管它,直接考虑else部分即可。
compile(args)是真正执行编译功能的地方。
public static int compile(String[] args) {
com.sun.tools.javac.main.Main compiler =
new com.sun.tools.javac.main.Main("javac");
return compiler.compile(args);
}创建com.sun.tools.javac.main.Main 类的对象(其实是构建了一个编译器实例),调用其compile方法,并把编译时获取的参数传递过去。
后面需要进入com.sun.tools.javac.main.Main继续跟踪了。