我一直在尝试使用注释处理器修改 AST。我尝试扩展 Lombok,但这似乎太难了,所以我决定使用 com.sun.source.* 和 com.sun.tools.javac.* 中的内容,但是,我使用的是 java 11,以及我正在学习的文档, "The Hacker's Guide to Javac" http://scg.unibe.ch/archive/projects/Erni08b.pdf,使用 Java 6。他们使用的 api 现在是内部的,我的模块无法读取它。
在 IntelliJ 中,它给了我一些错误,但我点击了建议(上面写着“添加 --Xxx-xxx 到 xxx”之类的东西)而没有注意它们。当我尝试用 Maven 编译时,它失败了,因为模块不阅读 jdk.compiler 的内部结构。
这些是我的一些进口商品:
import com.sun.source.util.Trees;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.TreeMaker;
import com.sun.tools.javac.tree.TreeTranslator;
import com.sun.tools.javac.util.Context;
我的模块信息文件包含
requires jdk.compiler;
requires java.compiler;
我收到类似“[ERROR]package com.sun.tools.javac.util is declared in module jdk.compiler, which does not export it to module OtherAnnot”和“[ERROR] (package com.sun.tools.javac.树在模块 jdk.compiler 中声明,它不会将其导出到模块 OtherAnnot)”
编辑:我想这是重复的,但我想知道在 Java 9 中是否有一些用于 AST 转换的替代 API。
胡说叔叔
相关分类