这样定义的一个注释
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface ParentChain {
public String chainName();
}
想在编译的时候获得chainName的值,并把它写到一个文件中public class FilterAnnotationProcessor implements AnnotationProcessor {
private AnnotationProcessorEnvironment env;
public FilterAnnotationProcessor(AnnotationProcessorEnvironment env){
this.env = env;
}
public void process() {
for(TypeDeclaration type:env.getSpecifiedTypeDeclarations()){
type.getAnnotation(ParentChain.class);
File file = new File("aptLog.txt");
try {
PrintWriter writer = new PrintWriter(file);
writer.write("this is a annotationProcessor");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}}用apt编译了,但信息并没有写进去,请高手帮忙看看该怎么实现!
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface ParentChain {
public String chainName();
}
想在编译的时候获得chainName的值,并把它写到一个文件中public class FilterAnnotationProcessor implements AnnotationProcessor {
private AnnotationProcessorEnvironment env;
public FilterAnnotationProcessor(AnnotationProcessorEnvironment env){
this.env = env;
}
public void process() {
for(TypeDeclaration type:env.getSpecifiedTypeDeclarations()){
type.getAnnotation(ParentChain.class);
File file = new File("aptLog.txt");
try {
PrintWriter writer = new PrintWriter(file);
writer.write("this is a annotationProcessor");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}}用apt编译了,但信息并没有写进去,请高手帮忙看看该怎么实现!
[apt] 警告: 在搜索路径中找不到指定的 AnnotationProcessorFactory "com.work.filter.annotation.processor.ProcessorFactory"。
[apt] 警告: 未找到注释处理器,但存在注释。ant的代码为
<path id="FactoryPath">
<fileset dir="${src.dir}/com/work/filter/annotation/processor">
<include name="**/*.java" />
</fileset>
<pathelement location="" />
</path>
....
<apt srcdir="${src.dir}" destdir="${classes.dir}" debug="on"
compile="true" factory="com.work.filter.annotation.processor.ProcessorFactory"
factorypathref="FactoryPath"
>
<classpath refid="project.classpath" />
<include name="**/*.java" />
</apt>
估计是这个factorypathref写的有问题,这个地方时相对路径还是绝对路径!不太明白
只需要在apt之前先把相关的AnnotationProcessorFactory、AnnotationProcessor以及自己定义的注释编译一下再执行apt即可。