powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Что в данном классе пытается вызвать другой
14 сообщений из 14, страница 1 из 1
Что в данном классе пытается вызвать другой
    #34244985
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла, прямо скажем, специфичная задача.
К примеру - есть класс Class1 с методом setClassName.
Есть еще какой-то класс (допустим, мы не знаем какой, хотя узнать всегда можем, так что пусть будет Class2).
Нужно узнать, что _пытается_ вызвать к Class2 у класса Class1 (через механизм reflection).
Опять же, к примеру, Class2 пытается вызвать метод setSomeInteger, который не существует в классе Class1, но подавляет исключение. Нужно зафиксировать тот момент, когда Class2 пытается это сделать...
Что-то даже не знаю, с какой стороны к данной проблеме подойти.
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245162
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странная задача и/или плохое объяснение.
Я понял так: C1 используется через рефлекшн в C2. Надо: трекать момент дерганья метода(ов) C1.
Надеюсь, вам это надо не для постоянного использования? т.е. не на продакшне, а для дебага и выявления еб****го кода?
Если да, то - подмена реализации C1, по другому никак.
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245182
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmСтранная задача и/или плохое объяснение.
Я понял так: C1 используется через рефлекшн в C2. Надо: трекать момент дерганья метода(ов) C1.
Надеюсь, вам это надо не для постоянного использования? т.е. не на продакшне, а для дебага и выявления еб****го кода?
Если да, то - подмена реализации C1, по другому никак.

Да, конечно для дебага ))) На продакшен такое пускать нельзя :)
Суть в том, что C1 - собственноручно написанный, а у C2 реализация скрыта (конечно, jad никто не отменял, но он здесь не поможет).

Вообще - задача узнать, какой метод класса C1 _хочет_ вызвать класс C2 при условии что в C1 этот метод может отсутсвовать.
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245271
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
^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(), например).
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245288
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, thnx, мысль понял... :) Опробуем на практике.
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245295
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
^ozzy^О, thnx, мысль понял... :) Опробуем на практике.
Отпишитесь о результате, интересно :)
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245416
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рано я обрадовался ... classloader подменить не удастся - это web application.
Набрел на один интересный метод: Runtime.traceMethodCalls(boolean). В javadoc написано:

Код: plaintext
1.
2.
3.
4.
Enables/Disables tracing of method calls.  If  the  boolean  argument is true,  this  method suggests that the Java virtual machine emit debugging information  for  each method in the virtual machine as it is called. The format of  this  information, and the file or other output stream to which it is emitted, depends on the host environment. The virtual machine may ignore  this  request  if  it does not support  this  feature.

Calling  this  method with argument false suggests that the virtual machine cease emitting per-call debugging 
information.

Только у меня он напрочь отказывается работать...

Будем думать дальше )
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245524
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мое предложение не прокатило бы и по другой более серьезной причине - java.lang.Class проксировать не получится, нет у него интерфейсов кроме Serializable.
Лучше, думаю, обратиться к разработчикам с просьбой пояснить ситуацию (вполне м.б. что проглатывание NoSuchMethodException не баг, а фича)
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245553
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разработчиков в команде уже давно нет и найти их не представляется возможным.
Думаю, что игра не стоит свеч (хотя из спортивного уже интереса постараюсь довести дело до конца) )
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245568
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему jad не поможет?
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245866
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalexakaпочему jad не поможет?

Он помочь может единожды, а хотелось бы для повседневного использования, потому как задача может повториться (и повторится).

Проблема на данный момент решена именно с его помощью. Универсальное средство на уровне размышлений.
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245937
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
codeSupport.setPossibleWithoutHeadache(sources.isAvailable());
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34245987
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно пояснить, что Вы хотели сказать этой строкой кода ?
...
Рейтинг: 0 / 0
Что в данном классе пытается вызвать другой
    #34246028
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саппорт кода при отсутствии исходников и документации - настоящая головная боль
ЗЫ
Удачи и всего наилучшего.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Что в данном классе пытается вызвать другой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]