编译期修改 AST,实现对类的增强

1. 新建项目

IDEA 新建项目,再创建两个子 module,core 为处理器,sample 为测试样例,目录结构:

demo
├── core
│   ├── src
│   │   └── main
│   │       ├── java
│   │       └── resources
│   └── pom.xml
├── sample
│   ├── src
│   │   └── main
│   │       ├── java
│   │       └── resources
│   └── pom.xml
└── pom.xml

启用注解处理器:

Preferences → Build, Execution, Deployment → Compiler → Annotation Processors → Enable annotation Processing

如果项目编译报错,需要在 IDEA 设置里配置

Build, Execution, Deployment → Compiler → Shared build process VM options

-Djps.track.ap.dependencies=false

2. core 模块

3. sample 模块

4. Debug 编译流程

在项目中创建 Remote JVM Debug,端口号改为 8000

20220320-1

在项目中根目录,执行命令

mvnDebug clean compile

终端中显示

Preparing to execute Maven in debug mode
Listening for transport dt_socket at address: 8000

项目中点击图中红色 Debug 按钮,即可启用调试

20220320-2

20220320-3

5. 下载 Javac 源码

下载最新的源码,在 IDEA 中任意一个 Javac 中的 class 文件 中点击 Choose Sources,选中刚下载完解压后的文件夹,仅导入src/share/classes/即可