首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ECJ编译器编译后缺少的注释信息

用ECJ编译器编译后缺少的注释信息
EN

Stack Overflow用户
提问于 2015-05-23 21:42:33
回答 1查看 64关注 0票数 0

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

源代码由javac编译的字节码解压缩:

代码语言:javascript
复制
public class HelloWorldApp {

    @GetAction("/hello")
    public String sayHello() {
        return "Hello World!";
    }
}

从ECJ编译的字节码中解压缩的源代码:

代码语言:javascript
复制
public class HelloWorldApp {

    public String sayHello() {
        return "Hello World!";
    }
}

因此,很明显,ECJ编译的字节码中缺少注释@GetAction("/hello") (在内存编译中)。

以前有没有人遇到过这个问题,有什么线索吗?

提供更多信息的更新

看一看下面的截图:

因此,它位于ASTNode.resolveAnnotations()方法#797行中:

( A)状态if ((method.tagBits & TagBits.AnnotationResolved) != 0) return annotations;甚至会将null作为注释返回

( B)出现源注释@GetAction("/hello")的原因是

( C) this.annotations字段是null

D) if条件(method.tagBits & TagBits.AnnotationResolved) != 0计算为true。

更新2

看起来我捕捉到的屏幕太早了,所以一旦进程完成,我发现注释信息就会被存储起来:

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

Note I使用ECJ 4.4.1:

代码语言:javascript
复制
<dependency>
  <groupId>org.eclipse.jdt.core.compiler</groupId>
  <artifactId>ecj</artifactId>
  <version>4.4.1</version>
</dependency>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-24 00:39:24

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

代码语言:javascript
复制
    opt(map, OPTION_TargetPlatform, "1.6");

此问题是由ECJ中默认的JDK版本为1.2引起的,该版本不支持注释

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30417882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档