2010-10-04 2 views
4

В Eclipse или NetBeans, когда вы «контролируете + щелчок» в функции, вы можете по крайней мере увидеть всю свою подпись, даже если она находится в файле jar.Как я могу получить функцию sinatures из файла jar?

Мне интересно, можно ли написать инструмент, чтобы вытащить все сигнатуры функций из файла jar. Есть ли API для этого?

Я знаю, что jDepend, как представляется, предлагает функции для этого. Однако я считаю, что есть еще несколько общих способов сделать это.

ответ

2

Jars - это zip-файлы, поэтому вы можете использовать подпрограммы zip, чтобы получить определение байтового кода для каждого класса в файле jar.

Затем, используя байтовый код, вы можете использовать инструмент анализа байтового кода, например javassist, для загрузки байтового кода в ClassFile, а затем получить метод MethodInfo, который вы можете обрабатывать по своему усмотрению.

+0

Это/not/способ идентифицировать сигнатуры методов из файла jar. См. Ответ Каспара. –

+0

Ну, так я и сделал бы это. +1 для этого :-) –

+0

@ Hernal, зависит от того, что вам нужно. –

4

Я думаю, что инструмент javap - это то, что вам нужно.

Нечто вроде javap -classpath ./lib/ MyClass должно сделать трюк.

См. Также this tutorial и справочную информацию для javap (google javap, у меня недостаточно репутации, чтобы опубликовать более 1 ссылки).

+0

Это потрясающе. Я этого не знал. Благодаря! (+1) –