前言
跟JVM不同,javac是用java语言编写的,所以想要调试javac源码是非常简单的。
之前写过两篇文章:
说明
需要说明的是,本文讨论的是java版本是java8。
在java8中,官方jdk是没有附带javac源码的。所以我们只能在openjdk中获取javac源码。
-
首先下载好openjdk8。
-
创建一个新的java工程。
image.png -
将javac的源码导入到工程中,只导入:
image.pngcom.sun.tools.javac.Main
即可。
image.png -
解决报错
报错的原因是我们没有引入com.sun.tools.javac.Main
的相关依赖,简单说就是classpath中没有tools.jar。
当然如果我们把整个相关的源码引入的话,tools.jar是不需要的。道理是很浅显的,就是
image.pngcom.sun.tools.javac.Main
依赖满足即可,怎么弄都可以。
引入tools.jar:
image.png
- 运行
执行main
方法:
image.png
相当于直接在命令行执行javac
,没有任何参数:
image.png
至此,javac的源码就运行起来了。
编译HelloWorld
- 新建一个
HelloJavac.java
image.png
可以看到
HelloJavac
目前是还没有编译的。
-
配置参数:
image.png
这里我配置的参数是:
-d $ModuleFileDir$\target\classes $ModuleFileDir$\src\main\java\com\hello\HelloJavac.java
读者根据自己的路径自行更改,宏是从图红框里选的。
-
编译结果
image.png
更多
如果你想给源码添加注释,那除了导入com.sun.tools.javac.Main
以外,可以导入更多的类。不过我建议是需要哪个导入哪个,不用编译这么多,不注释的类就用tools.jar里的即可。
网友评论