最简单的方式调试javac源码

李不言被占用了IP属地: 黑龙江
0.133字数 497

前言

跟JVM不同,javac是用java语言编写的,所以想要调试javac源码是非常简单的。
之前写过两篇文章:

说明

需要说明的是,本文讨论的是java版本是java8。
在java8中,官方jdk是没有附带javac源码的。所以我们只能在openjdk中获取javac源码。

  1. 首先下载好openjdk8。

  2. 创建一个新的java工程。


    image.png
  3. 将javac的源码导入到工程中,只导入:com.sun.tools.javac.Main即可。

    image.png

    image.png

  4. 解决报错
    报错的原因是我们没有引入com.sun.tools.javac.Main的相关依赖,简单说就是classpath中没有tools.jar。

当然如果我们把整个相关的源码引入的话,tools.jar是不需要的。道理是很浅显的,就是com.sun.tools.javac.Main依赖满足即可,怎么弄都可以。
引入tools.jar:

image.png

image.png

  1. 运行
    执行main方法:
    image.png

    相当于直接在命令行执行javac,没有任何参数:
    image.png

至此,javac的源码就运行起来了。

编译HelloWorld

  1. 新建一个HelloJavac.java
    image.png

可以看到HelloJavac目前是还没有编译的。

  1. 配置参数:


    image.png

这里我配置的参数是:-d $ModuleFileDir$\target\classes $ModuleFileDir$\src\main\java\com\hello\HelloJavac.java 读者根据自己的路径自行更改,宏是从图红框里选的。

  1. 编译结果


    image.png

更多

如果你想给源码添加注释,那除了导入com.sun.tools.javac.Main以外,可以导入更多的类。不过我建议是需要哪个导入哪个,不用编译这么多,不注释的类就用tools.jar里的即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
1人点赞
李不言被占用了撸铁的码农
总资产106共写了4.2W字获得277个赞共123个粉丝

推荐阅读更多精彩内容