Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Найти класс по значению аннтонации / 7 сообщений из 7, страница 1 из 1
07.11.2012, 17:14:31
    #38029055
abc_da
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти класс по значению аннтонации
Добрый день,
Вопрос слабо касается ПРОГРАММИРОВАНИЯ на языке Java, однако:

Я разбираюсь с внушительных размеров приложением, которое по-сложному конфигурируется.
Моя задача - узнать имя класса(найти *.class-файл), о котором мне наверняка известно следующее:
- в классе присутствует известная аннотация @SomeAnnotation("someString"), "someString" - известная строка
- класс определенно существует на classpath(либо как отдельно-лежащий *.class-файл, либо внутри какого-то *.jar)

Я пытался искать с помощью FarManager'а, обычно он с поиском строк внутри class-файлов и jar-ов справляется хорошо, но в данном случае этот способ мне не помог.

Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
07.11.2012, 17:20:10
    #38029065
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти класс по значению аннтонации
Find Usages в любой IDE, если есть исходники. Или исходников нет?
...
Рейтинг: 0 / 0
07.11.2012, 17:50:05
    #38029120
abc_da
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти класс по значению аннтонации
Исходников нет, есть плагин-декомпилятор. Find usages в eclipse работает только для аннотации, но не для передаваемых параметров. И это 1300 результатов. А мне нужен всего 1, где в эту аннотацию передан известный мне строковый параметр.
...
Рейтинг: 0 / 0
07.11.2012, 18:01:17
    #38029137
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти класс по значению аннтонации
...
Рейтинг: 0 / 0
07.11.2012, 20:33:34
    #38029294
marx_freedom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти класс по значению аннтонации
APT работает по исходникам, а не по классам.

Способ хардкорный - положить все в classpath, и написать void main, где пройтись по всем классам (просканировать содержимое jar-ов как архивов, или написать classloader) и через reflection спрашивать что и где.
...
Рейтинг: 0 / 0
07.11.2012, 21:57:23
    #38029401
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти класс по значению аннтонации
marx_freedomAPT работает по исходникам, а не по классам.

Способ хардкорный - положить все в classpath, и написать void main, где пройтись по всем классам (просканировать содержимое jar-ов как архивов, или написать classloader) и через reflection спрашивать что и где.

А почему хардкорный я бы так и делал - и спринги всякие также делают
...
Рейтинг: 0 / 0
08.11.2012, 02:25:46
    #38029540
abc_da
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти класс по значению аннтонации
забыл ник,

Это слишком круто, т.к. узнать имя класса нужно однократно и не обязательно в рантайме. Цель - найти класс и заменить его своим. Меня, кстати, всегда интересовало, как spring и иже с ним сканируют classpath, ведь нет в java встроенных методов для получения, например, всех классов из заданного package'a. Может кто-нибудь поделиться информацией на этот счет?

Мне в голову пришел еще один топорный способ: декомпилировать все классы, по которым планируется поиск и, если декомпилятор нормально понимает аннотации, можно будет простым текстовым поиском найти нужную строку. Однако, тут вопрос: какой декомпилятор понимает аннотации и при этом может быть натравлен на папку, а не на отдельный class-файл. Знает кто-нибудь?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Найти класс по значению аннтонации / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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