Как просмотреть исходный код из файла JAR в моем собственном JAVA GUI? - PullRequest
4 голосов
/ 16 августа 2010

У меня есть один графический интерфейс с одним списком для отображения списка методов в классе. Я могу добиться этого с помощью отражения. Но можно ли просмотреть исходный код в другой текстовой области при выборе имени метода?

Я знал о декомпиляторах. но я не хочу видеть исходный код в их окне.

Я хочу использовать стороннюю библиотеку, чтобы видеть исходный код конкретного метода в своем собственном графическом интерфейсе.

Пожалуйста, предложите, если для этого есть API.

Ответы [ 4 ]

4 голосов
/ 16 августа 2010

Вам понадобится какой-то декомпилятор, на который вы можете ссылаться.Я не уверен, что есть какие-либо библиотеки, но вот ссылка на JD Java Decompiler .

Помните, что вы теряете имена переменных и тому подобное во время компиляции, так что если вы декомпилируете полученный исходный кодможет быть менее читабельным.

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

Ваша самая большая проблема будет заключаться в том, чтобы определить, когда метод заканчивается, и простое решение состоит в подсчете { 's и }'s и определить, когда { в объявлении метода закрыто.

1 голос
/ 07 ноября 2013

Это старый вопрос, но, учитывая, что ландшафт декомпилятора значительно изменился за последний год, я чувствую, что стоит воскресить.среди прочего, декомпилятор Java.Он написан на Java, и API-интерфейсы декомпилятора могут быть легко интегрированы в другое приложение.На самом деле уже есть два сторонних интерфейса GUI, в том числе SecureTeam Java Decompiler .

CFR пока не доступен исходный кодтакже отличный декомпилятор.Он также написан на Java, и хотя я не пытался интегрировать его с существующим приложением, это, безусловно, должно быть возможно.

0 голосов
/ 16 августа 2010

Я оставляю предыдущий ответ, если он вам нужен, но JODE долгое время не обновлялся.В поисках я не могу найти никакого декомпилятора с открытым исходным кодом или доступного в виде библиотеки.

JODE может быть именно тем, что вы хотите.Декомпилятор ядра выпущен в виде библиотеки под GNU LGPL, поэтому вы можете без проблем интегрировать его в свою программу.

0 голосов
/ 16 августа 2010

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

Я использовал NetBeans, поэтому упаковка файлов .java была такой же простой, как и изменение одного фильтра.Я проверил свойства java, чтобы найти файл jar, и отсканировал его так же, как и любой другой zip-файл на наличие исходных файлов java.При таком подходе графический интерфейс с JTreeTable, заполненным исходными файлами, и JTextArea, отображающий исходный код, были тривиальными.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...