Eclipse 使用ECJ编译器编译后缺少注释信息
我发现从ECJ编译器编译的字节码缺少注释信息 从javac编译的字节码反编译的源代码: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() {
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引起的,它不支持注释