С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
2 / 2 / 1
Регистрация: 05.05.2011
Сообщений: 67

Получение списка всех доступных методов из библиотеки jar

28.11.2013, 11:06. Показов 6470. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Подскажите пожалуйста, как получить из jar библиотеки список всех методов, которые могут быть использованы в своих приложениях. Т.е. как я понимаю это все public методы из public классов. Желательно получить прототипы методов. И ещё хотел бы уточнить, оказывает ли package влияние на доступность в public классе public метода.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2013, 11:06
Ответы с готовыми решениями:

MacBook: Горячие клавиши для выпада списка доступных методов и функций
Добрый день! Подскажите комбинацию клавиш на маковской клаве, с помощью которой выпадает в редакторе список доступных методов и функций? ...

Получение списка доступных COM портов
Хочу получить список портов. Нашел пару примеров под делфи. Но в них используются несуществующие константы в лазарусе.

Получение списка доступных шрифтов
Как получить список установленных в системе шрифтов?

14
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
28.11.2013, 11:34
Имхо, нинужна. Это ООП-шный язык, и рассматривать методы отдельно от их классов - занятие потенциально бесперспективное.

Цитата Сообщение от xreal Посмотреть сообщение
оказывает ли package влияние на доступность в public классе public метода
Публичный метод публичного класса доступен везде.

Вообще для задач такого вида Reflection API.
0
2 / 2 / 1
Регистрация: 05.05.2011
Сообщений: 67
28.11.2013, 12:03  [ТС]
Вот, так а как имея на руках jar библиотеку получить из неё список типа такого:

1. класс - метод(аргументы)
2. класс - метод(аргументы)
...

Соответственно все паблик классы и их паблик методы. В принципе можно без аргументов даже...

Просто у нас же есть .class файлы в jar'e, которые содержат всю инфу необходимую. Ну для аналогии, это как получить список экспортируемых функций из DLL
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
28.11.2013, 12:25
Методы в классах - НЕ аналог функций в DLL. Класс Вы еще создать должны. Для чего надо знать сигнатуру конструктора, передать правильные параметры... Просто кинуть jar и использовать его - непросто, это надо ряд телодвижений предпринять.

Вам это вообще зачем?
0
2 / 2 / 1
Регистрация: 05.05.2011
Сообщений: 67
28.11.2013, 12:40  [ТС]
Я понимаю, что это не совсем аналог функций из DLL.

Грубо говоря у меня есть jar библиотека, которая содержит интересные мне методы. Мне нужно знать какие методы из неё я смогу использовать.
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
28.11.2013, 12:53
Вы можете использовать классы, а не методы. Исходите из этого.
0
2 / 2 / 1
Регистрация: 05.05.2011
Сообщений: 67
28.11.2013, 12:56  [ТС]
Что значит классы, а не методы? Если класс не статический я создаю экземпляр класса, которому доступны публичные методы класса и использую их. Если же класс статический, то напрямую вызываю методы по имени класса. Или я что-то не так понимаю?

Вопрос собственно в том, чтобы получить полный список всех публичных классов их методов из jar файла.
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
28.11.2013, 12:59
xreal, для библиотек обычно есть доки. Или можно открыть архиватором, посмотреть, какой корневой пакет(обычно это org, com), пишете "import rootpack." и появится список всего, что доступно. Тем более и так в IDE можно посмотреть, в дереве объектов. (NB, например)
Миниатюры
Получение списка всех доступных методов из библиотеки jar  
0
2 / 2 / 1
Регистрация: 05.05.2011
Сообщений: 67
28.11.2013, 15:09  [ТС]
Были б доки - не было б вопросов)) А вот "import rootpack" попробую, спасибо. В IDE - просто посмотреть, а мне надо список экспортируемый.

Добавлено через 29 минут
А куда писать import rootpack?
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
28.11.2013, 15:37
Цитата Сообщение от xreal Посмотреть сообщение
Что значит классы, а не методы? Если класс не статический я создаю экземпляр класса, которому доступны публичные методы класса и использую их. Если же класс статический, то напрямую вызываю методы по имени класса. Или я что-то не так понимаю?
1. Статическими могут быть только внутренние классы. Класс, не являющийсы внутренним, не может быть статическим.

2. Для создания экземпляра класса Вам надо знать, что этот класс делает и какие у него есть конструкторы. Никакой список методов Вам не поможет. Так что Вы должны сначала понять, зачем нужен этот класс, а потом уже - как использовать его нестатические методы.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
28.11.2013, 15:40
вопрос на засыпку к знающим, а в данной ситуации javadoc.exe не решит проблему ТС?
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
28.11.2013, 15:43
Цитата Сообщение от xreal Посмотреть сообщение
А куда писать import rootpack?

Не по теме:

В завещание...



Под rootpack имелся в виду корневой пакет. Т.е. если в библиотеке пакеты начинаются на org, то написать import org. (с точкой на конце) там, где прописываются все импорты - и можно получить следующий уровень пакета. Выбрать его, поставить точку - получить следующий урвоень, и так до классов.

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

Цитата Сообщение от tankomaz Посмотреть сообщение
вопрос на засыпку к знающим, а в данной ситуации javadoc.exe не решит проблему ТС?
Нет, он генерирует документацию по исходникам. Анализировать байткод он не умеет.

Проблему ТС решит самописная утилита, которая прочитает jar как zip, вытащит из него все имена класов, а потом пройдется по этим именам, загрузит каждый класс по имени и через reflection вытащит весь список методов, конструкторов и т.д. Но такая утилита, кмк, сильно превышает возможности ТС.
1
2 / 2 / 1
Регистрация: 05.05.2011
Сообщений: 67
28.11.2013, 15:55  [ТС]
Хорошо, что если задача такая:

Я знаю описание класса, его конструкторов и тд. Я знаю часть публичных методов. И могу всем этим пользоваться, но мне нужно узнать те, что не описаны в документации, и пользоваться ими. Хотя они есть в этих же классах.

В итоге необходимо получить просто список всех методов которые могут быть использованы. Это и есть вся задача.

Добавлено через 6 минут
Я совсем не java программист. У меня другие задачи. Уровень понимания - когда-то давно я немного экспериментировал с java не более.

И, уважаемый эксперт Skipy, я создал тему, чтобы узнать есть ли простой способ это сделать. А вы мне рассказываете теорию работы с классами, вместо чёткого ответа на вопрос.

Если это решается только при помощи самописной утилиты - поверьте, это не сильно превышает мои возможности, но опыта java программирования, конечно, у меня не достаточно для быстрого написания такой утилиты, а разобраться и написать её не так уж и сложно. По сути просто - парсер.
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
28.11.2013, 16:07
Цитата Сообщение от xreal Посмотреть сообщение
Я знаю описание класса, его конструкторов и тд. Я знаю часть публичных методов. И могу всем этим пользоваться, но мне нужно узнать те, что не описаны в документации, и пользоваться ими. Хотя они есть в этих же классах.
В IDE после переменной типа класса ставите точку - и получаете список всех методов.

И, уважаемый эксперт Skipy, я создал тему, чтобы узнать есть ли простой способ это сделать. А вы мне рассказываете теорию работы с классами, вместо чёткого ответа на вопрос.
Когда вопрос нечеткий - ответа четкого быть не может. У Вас изначально неправильная аналогия приведена - Вы хотите получить методы из jar как функции из dll. А это невозможно. Идеологически.

Если это решается только при помощи самописной утилиты - поверьте, это не сильно превышает мои возможности, но опыта java программирования, конечно, у меня не достаточно для быстрого написания такой утилиты, а разобраться и написать её не так уж и сложно. По сути просто - парсер.
Парсер, говорите?.. Ну-ну. Интересно будет посмотреть, как Вы разберете jar на классы. Что-то мне подсказывает, что будут сюрпризы.
0
2 / 2 / 1
Регистрация: 05.05.2011
Сообщений: 67
28.11.2013, 16:22  [ТС]
Цитата Сообщение от Skipy Посмотреть сообщение
В IDE после переменной типа класса ставите точку - и получаете список всех методов.
Это я понимаю, но представьте, что у вас есть 10 jar файлов по 10мб, попробуйте точками в IDE сделать перепись всех доступных классов и методов.


Ох и зачем разбирать мне jar файл по классам? Почему бы просто не извлечь архиватором из jar файла все классы и потом пройти таким парсером по папкам, которые соответствуют пакетам, а в этих папках по файлам классов, используя тот же Reflect (сижу читаю его описание как раз).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2013, 16:22
Помогаю со студенческими работами здесь

Получение всех доступных DHCP-серверов
Добрый день. Задача состоит в том, что бы через Командную строку вывести все доступные DHCP сервера. Но на самом деле, задача у нас...

Получение списка доступных Wi-Fi сетей и подключение к выбранной сети
Здравствуйте, уважаемые форумчане! Googl'ил - Муглил, но ответа пока не нашёл, а вопросы таковы: 1) Как средствами vb.net получить...

Получение всех доступных ip из сети и последующий ping этих ip
Как в Visual Studio реализовать получение всех доступных IP из сети и последующий ping этих ip ?

Динамическая загрузка сторонних UserControl и получение всех их свойств и методов
Уважаемые коллеги. Подскажите в какую сторону копать? Необходимо но форму, динамически подгружать сторонние usercontrol`ы и для...

Просмотр списка всех методов в конструкторе Visual Studio
Здравствуйте. Столкнулся с такой проблемой: при создании программ на VB.Net, независимо от того, описывал ли я событие - все события...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru