2011-03-10 37 views
2

在我的項目我使用log4j的記錄錯誤和很多框架:AOP,彈簧等從堆棧跟蹤第一行調用方法:「MyClass.java:1」

是什麼意思,當我有我的堆棧跟蹤,調用在第1行,如:

com.foo.bar.MyException: Error 
    at com.foo.bar.MyClass.handleException(MyClass.java:92) 
    at com.foo.bar.MyClass.myMethod(MyClass.java:76) 
    at com.foo.bar.MyClass.myMethod(MyClass.java:1) // <- here ??? 
    ... 

在1號線我的班是評論,一切都正確編譯

MyClass.java:

/* Copyright 2011 */ 
package com.foo.bar; 

import ... 

public class MyClass implements MyInterface {... 

回答

5

我在調試過程中也看到了這種現象 - 步入方法有時首先跳到聲明類的第一行,然後的實際方法。如果不能給你一個參考,我認爲這是在某些情況下派發重寫方法(協變返回類型至少是一個)。在這些情況下,編譯器需要插入一個合成橋方法,得到了「真正的」方法之前調用,我的猜測是,這種方法得到的1

有效行號在任何情況下,我不知道認爲這是你需要擔心的事情 - 正如你所看到的,你自己的myMethod實現在第76行之後立即被成功調用。