Eclipse 使用ECJ编译器编译后缺少注释信息

Eclipse 使用ECJ编译器编译后缺少注释信息,eclipse,javac,ecj,Eclipse,Javac,Ecj,我发现从ECJ编译器编译的字节码缺少注释信息 从javac编译的字节码反编译的源代码: public class HelloWorldApp { @GetAction("/hello") public String sayHello() { return "Hello World!"; } } 从ECJ编译的字节码反编译的源代码: public class HelloWorldApp { public String sayHello() {

我发现从ECJ编译器编译的字节码缺少注释信息

从javac编译的字节码反编译的源代码:

public class HelloWorldApp {

    @GetAction("/hello")
    public String sayHello() {
        return "Hello World!";
    }
}
从ECJ编译的字节码反编译的源代码:

public class HelloWorldApp {

    public String sayHello() {
        return "Hello World!";
    }
}
显然,ECJ在内存编译中编译的字节码中缺少@GetAction/hello注释

有人曾经遇到过这个问题,有没有线索

更新更多信息

请看以下屏幕截图:

因此,它位于ASTNode.797行:

A如果method.tagBits&tagBits.AnnotationResolved!=0返回注释;将作为注释返回null

B显示源注释@GetAction/hello是因为

C this.annotations字段为null,并且

D if条件method.tagBits&tagBits.AnnotationResolved!=0的计算结果为true

更新2

看起来我捕获屏幕的时间太早了,所以一旦过程完成,我发现要存储的注释信息:

但是,我仍然无法从结果文件中获取注释信息。单击下载生成的字节码文件:

注:我使用的是ECJ 4.4.1:

<dependency>
  <groupId>org.eclipse.jdt.core.compiler</groupId>
  <artifactId>ecj</artifactId>
  <version>4.4.1</version>
</dependency>

问题解决了!只需添加以下行:

    opt(map, OPTION_TargetPlatform, "1.6");
这个问题是由ECJ中默认的JDK版本1.2引起的,它不支持注释