
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.01.2007, 11:26:57
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
Возникла, прямо скажем, специфичная задача. К примеру - есть класс Class1 с методом setClassName. Есть еще какой-то класс (допустим, мы не знаем какой, хотя узнать всегда можем, так что пусть будет Class2). Нужно узнать, что _пытается_ вызвать к Class2 у класса Class1 (через механизм reflection). Опять же, к примеру, Class2 пытается вызвать метод setSomeInteger, который не существует в классе Class1, но подавляет исключение. Нужно зафиксировать тот момент, когда Class2 пытается это сделать... Что-то даже не знаю, с какой стороны к данной проблеме подойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 12:11:09
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
Странная задача и/или плохое объяснение. Я понял так: C1 используется через рефлекшн в C2. Надо: трекать момент дерганья метода(ов) C1. Надеюсь, вам это надо не для постоянного использования? т.е. не на продакшне, а для дебага и выявления еб****го кода? Если да, то - подмена реализации C1, по другому никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 12:16:25
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
TimmСтранная задача и/или плохое объяснение. Я понял так: C1 используется через рефлекшн в C2. Надо: трекать момент дерганья метода(ов) C1. Надеюсь, вам это надо не для постоянного использования? т.е. не на продакшне, а для дебага и выявления еб****го кода? Если да, то - подмена реализации C1, по другому никак. Да, конечно для дебага ))) На продакшен такое пускать нельзя :) Суть в том, что C1 - собственноручно написанный, а у C2 реализация скрыта (конечно, jad никто не отменял, но он здесь не поможет). Вообще - задача узнать, какой метод класса C1 _хочет_ вызвать класс C2 при условии что в C1 этот метод может отсутсвовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 12:36:33
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
^ozzy^ TimmСтранная задача и/или плохое объяснение. Я понял так: C1 используется через рефлекшн в C2. Надо: трекать момент дерганья метода(ов) C1. Надеюсь, вам это надо не для постоянного использования? т.е. не на продакшне, а для дебага и выявления еб****го кода? Если да, то - подмена реализации C1, по другому никак. Да, конечно для дебага ))) На продакшен такое пускать нельзя :) Суть в том, что C1 - собственноручно написанный, а у C2 реализация скрыта (конечно, jad никто не отменял, но он здесь не поможет). Вообще - задача узнать, какой метод класса C1 _хочет_ вызвать класс C2 при условии что в C1 этот метод может отсутсвовать. Аа, понял. С2 подавляет NoSuchMethodException. Ну тогда надо проксировать Class object для C1 в кастомном класслоадере после super.defineClass(...), если есть возможность подменить класслоадер в котором грузится C1. В проксированном Class можно обрабатывать вызов get<...>Method(...) и что то делать (Thread#dumpStack(), например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 12:39:51
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
О, thnx, мысль понял... :) Опробуем на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 12:41:28
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
^ozzy^О, thnx, мысль понял... :) Опробуем на практике. Отпишитесь о результате, интересно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 13:08:42
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
Рано я обрадовался ... classloader подменить не удастся - это web application. Набрел на один интересный метод: Runtime.traceMethodCalls(boolean). В javadoc написано: Код: plaintext 1. 2. 3. 4. Только у меня он напрочь отказывается работать... Будем думать дальше ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 13:38:17
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
Мое предложение не прокатило бы и по другой более серьезной причине - java.lang.Class проксировать не получится, нет у него интерфейсов кроме Serializable. Лучше, думаю, обратиться к разработчикам с просьбой пояснить ситуацию (вполне м.б. что проглатывание NoSuchMethodException не баг, а фича) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 13:42:55
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
Разработчиков в команде уже давно нет и найти их не представляется возможным. Думаю, что игра не стоит свеч (хотя из спортивного уже интереса постараюсь довести дело до конца) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 13:46:03
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
почему jad не поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 14:48:29
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
zalexakaпочему jad не поможет? Он помочь может единожды, а хотелось бы для повседневного использования, потому как задача может повториться (и повторится). Проблема на данный момент решена именно с его помощью. Универсальное средство на уровне размышлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 15:06:39
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2007, 15:19:18
|
|||
|---|---|---|---|
Что в данном классе пытается вызвать другой |
|||
|
#18+
Можно пояснить, что Вы хотели сказать этой строкой кода ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2147011]: |
0ms |
get settings: |
15ms |
get forum list: |
19ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
56ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 473ms |

| 0 / 0 |
