Как просмотреть исходный код из файла JAR в моем собственном Java GUI?
-
28-09-2019 - |
Вопрос
У меня есть один графический интерфейс с одним ящиком списка, чтобы отобразить список методов в классе. Я могу достичь его с использованием отражения. Но могу ли я просмотреть исходный код в другой области текста при выборе имени метода?
Я знал о декомпилерах. Но я не хочу видеть исходный код в своем окне.
Я хочу использовать немного третьей партии, чтобы я мог видеть исходный код определенного метода в моем собственном графическом интерфейсе.
Пожалуйста, предложите, если для этого доступна API.
Решение
Вам понадобится декомпилятор какой-то, чтобы вы могли связаться. Я не уверен, что есть какие-либо библиотеки, но вот ссылка на JD Java Decompiler.
Помните, что вы теряете имена переменных и такие во время компиляции, поэтому, если декомпилировать полученный исходный код может быть менее читаемым.
Если у вас есть доступ к источнику, вы можете связать его в классных файлах, и найти выбранный источник метода в исходных файлах, связанных с этим. Это может быть достигнуто простым однопробовным анализом исходных файлов.
Ваша самая большая проблема будет определять, когда метод заканчивается, и простое решение - сосчитать {
'песок }
и определите, когда {
Декларация метода закрыта.
Другие советы
Это старый вопрос, но, поскольку в прошлом году ландшафт декомпилятора значительно изменился, я чувствую, что его стоит воскресить.
Пропионский Является ли структура открытых источников, которая содержит, среди прочего, Java Decompiler. Он написан в Java, и API для декомпилятора могут быть легко интегрированы в другое приложение довольно легко. На самом деле, уже есть две сторонние интерфейсы GUI, включая Secureteam Java Decompiler.
CFR У нее нет доступного исходного кода, но это также отличный декомпилятор. Это тоже написано в Java, и пока я не пытался интегрировать его с существующим приложением, он, безусловно, должен быть возможен.
Я когда-то создал приложение, которое включало свой собственный просмотрщик исходного кода. Я думаю, что это хорошая альтернатива декомпиляторам, которые могут прийти с довольно зависимостями.
Я использовал NetBeans, поэтому упаковка .java
Файлы были максимально легкими, как изменение одной опции фильтра. Я проверил недвижимость Java, чтобы найти файл JAR и отсканировал его как и любой Zip-файл для исходных файлов Java. При таком подходе, имеющем графический интерфейс с Jtreatable, населенными исходными файлами и JTextarea, отображающим исходный код, был тривиальным.
Я считаю, что вы можете сделать то же самое с добавлением на один шаг больше - отсечение источника, чтобы содержать только выбранный метод. Я думаю, что он должен кипеть до простого анализатора, который подсчитывает открытие и закрывающие кронштейны.
Я покидаю более раннее ответа на случай, если вам это нужно, но Jode не был обновлен в течение длительного времени. Поиск вокруг, я не могу найти какой-либо декомпилятор, который является открытым источником или доступным в форме библиотеки.
Джод может быть именно то, что вы хотите. Основной декомпилятор выпускается как библиотека под LGPL GNU, поэтому вы можете интегрировать его в свою программу без проблем.