我發現從ECJ編譯器編譯的字節碼缺少註釋信息。使用ECJ編譯器編譯後未能註釋註釋信息
public class HelloWorldApp {
@GetAction("/hello")
public String sayHello() {
return "Hello World!";
}
}
從字節碼由歐洲法院編譯反編譯源代碼:
public class HelloWorldApp {
public String sayHello() {
return "Hello World!";
}
}
所以很明顯的標註@GetAction("/hello")
是由編譯字節碼遺漏
從字節碼反編譯源代碼通過的javac編譯ECJ(內存編譯)。
任何人都曾遇到過這個問題,並得到任何線索?
更新更多的信息
看看下面的截圖:
因此,它是在ASTNode.resolveAnnotations()
方法線#797:
A)的狀態if ((method.tagBits & TagBits.AnnotationResolved) != 0) return annotations;
將返回null
作爲註釋甚至
B)源註釋@GetAction("/hello")
提出,因爲
C)的this.annotations
場null
和
d)如果條件(method.tagBits & TagBits.AnnotationResolved) != 0
計算爲真
更新2
它看起來像我拍攝的畫面太早,所以一旦過程完成,我發現註釋信息被存儲:
但是我仍然無法從結果文件中獲取註釋信息。點擊here下載生成的字節碼文件:
注意我使用ECJ 4.4.1:
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.4.1</version>
</dependency>