вызов метода из 1-й строки в stacktrace: "MyClass.java:1" - PullRequest
2 голосов
/ 10 марта 2011

В моем проекте я использую log4j для регистрации ошибок и многих фреймворков: AOP, spring и т. Д.

Что означает, когда в моей трассировке стека указано, что вызов был в 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 {...

1 Ответ

5 голосов
/ 10 марта 2011

Я наблюдал это явление и во время отладки - переход в метод иногда переходит сначала к первой строке объявленного класса, , а затем к фактическому методу. Не имея возможности дать вам ссылку, я думаю это как-то связано с отправкой переопределенных методов в некоторых ситуациях (ковариантные возвращаемые типы по крайней мере один). В этих случаях компилятору необходимо вставить метод искусственного моста, который вызывается перед «реальным» методом, и я предполагаю, что этот метод получает эффективный номер строки 1.

В любом случае, я не думаю, что вам следует о чем-то беспокоиться - как вы можете видеть, ваша собственная реализация myMethod успешно вызывается в строке 76 сразу после этого.

...