Java编译器回调机制?

Java编译器回调机制?,java,compiler-construction,Java,Compiler Construction,Java编译器中是否有任何类型的回调机制?我希望能够注册一个监听器,以便在源代码中找到某些标记时进行操作 注释允许您执行此操作,但不幸的是,这对我尝试执行的操作不起作用。确实附加到编译器。它使用注释来触发它(我知道这是您想要避免的),但是在源代码中,您会发现它是如何附加到编译器的。Eclipse编译器和Sun编译器都有专门的代码,似乎没有通用的“公共编译器API”(当然除了启动编译器) 可能javax.script适合您。在本例中,您可以使用绑定,它允许您为未知变量定义回调机制。但是如果没有具体

Java编译器中是否有任何类型的回调机制?我希望能够注册一个监听器,以便在源代码中找到某些标记时进行操作

注释允许您执行此操作,但不幸的是,这对我尝试执行的操作不起作用。

确实附加到编译器。它使用注释来触发它(我知道这是您想要避免的),但是在源代码中,您会发现它是如何附加到编译器的。Eclipse编译器和Sun编译器都有专门的代码,似乎没有通用的“公共编译器API”(当然除了启动编译器)


可能javax.script适合您。在本例中,您可以使用绑定,它允许您为未知变量定义回调机制。但是如果没有具体的细节,很难判断这是否适合您。

如果您不介意以编程方式执行,您可以研究1.6和。这两个信息,加上其他信息,都是从网站链接的。以下是您可以开始的方式:

JavaCompiler jc = ToolProvider.getSystemJavaCompiler();
// setup params for the compilation task
JavacTask jct = (JavacTask)jc.getTask(...); // com.sun.source.util.JavacTask
TaskListener tl = ...;
jct.setTaskListener(tl);

可能是静态初始化块?顺便说一句,我不确定他们的执行顺序是否在规范中严格定义。