Який був би найпростіший спосіб перегляду класів, методів, властивостей тощо у файлі jar? Я шукаю щось еквівалентне дуже корисному Lutz Roeder .NET Reflector - для Java
Який був би найпростіший спосіб перегляду класів, методів, властивостей тощо у файлі jar? Я шукаю щось еквівалентне дуже корисному Lutz Roeder .NET Reflector - для Java
Відповіді:
Використовуючи JDK, jar -tf
перелічить файли в банку. javap
дасть вам більше деталей з конкретного файлу класу.
tar
обов'язкових параметрів.
C:\Program Files\Java\jdk<version>\bin
до змінної середовища PATH вашої системи чи користувача, перш ніж використовуватись jar
як системна команда. (Де <version> - ваш номер jdk-версії для складання версії. Перевірте це C:\Program Files\Java
)
jar tf test.jar | grep MANIFEST
Я зазвичай відкриваю їх за допомогою 7-Zip ... Це дозволяє принаймні бачити пакунки та класи та ресурси.
Якщо мені потрібно бачити методи або поля, я б використовував Jad, але, звичайно, краще покластися на (хороший) JavaDoc ...
Тепер десь на SO згадувалися деякі плагіни Eclipse, щоб знайти, в якому файлі jar знаходиться клас, можливо, вони можуть зробити більше (тобто те, що ви запитали).
[EDIT] Посилання на нитку SO. Не те, що задається, але якось пов’язано, таким чином корисно: Java: Як я можу дізнатись, який jar jar-файл використовувати із назвою класу?
Я використовую особисто JD-GUI. Це безкоштовний "декомпілятор", оскільки він дозволяє бачити вихідний код, класи та об'єкти в класах, а також бачити структуру файлів у меню дерева зліва. Однак це не дозволяє безпосередньо змінювати класи.
Веб-сайт JD-GUI: http://jd.benow.ca/
Якщо хтось цього ще не знає, файл JAR - це лише ZIP-файл, який містить класи, ресурси тощо, програми та деякі метадані програми. Ви можете витягти його, щоб побачити, як це складено.
Отже, я використовую unzip
команду, яку легко запам’ятати та використовувати.
unzip -l <jar-file-name>.jar
Наприклад, якщо у вас є файл jar з ім'ям, test.jar
тоді unzip -l test.jar
буде перераховано весь вміст файлу jar.
Хоча всі інші відповіді чудові, але в більшості з них вам доведеться використовувати якесь програмне забезпечення, наприклад, 7 zip
або JDK
якийсь інший інструмент затемнення, хоча для цього не потрібно мати будь-яке з цих великих с / ш, і воно за замовчуванням відбувається в Linux і mac, тому його дуже легкий і зручний у використанні .
Ви також можете використовувати zipinfo <your jar file>
. якщо ваша ОС підтримує це.
Додавши jar до проекту в IDE, зазвичай можна побачити методи та назви полів, але не детальну реалізацію. NetBeans може це робити, Eclipse, ймовірно, IntelliJ, і т. Д. Ви можете переглядати структуру jar безпосередньо в IDE.
Для того, щоб переглянути вміст, ви можете використовувати:
jar tvf jarfile.jar
Для доступу до вихідного коду, ви б використовували декомпілятор, такий як JAD або один із його фронтів або інший декомпілятор. Якщо код приховано, то ...
Розширюючи відповідь Тома Хотіна, ви можете подати список, щоб відфільтрувати потрібний клас або файли:
jar tf my-fat-jar-file.jar | grep filename
Це має працювати на bash / zsh та подібних програм, або на ешеллі emacs.
Додаткова інформація: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
jar -tvf file_name.jar
вище буде надруковано лише імена файлів .
Щоб переглянути вміст файлів, ви можете витягнути їх у папку :
jar -xvf file_name.jar
це розпакує файл jar і поставить вміст у ту саму директорію, де ви це запустите.
Або в Windows перейменуйте .jar файл на .zip і тоді ви можете розпакувати, щоб витягнути & переглянути вміст файлу jar. Як jar - це внутрішньо zip-файл.
Використовуйте WinRar . Це відкриє структуру папок для вас неушкодженим чином. Також дозволяє редагувати в архіві, зберігаючи шляхи.
За фактом, файл JAR - це лише архів ZIP.
Якщо вам подобається бачити те, що знаходиться всередині, просто перейменуйте як перший варіант нижче.
F2 & Rename to jarfile.zip
// Використовуйте будь-яку розпаювач ...
jar tvf jarfile.jar
jar tf jarfile.jar
Якщо я правильно розумію, ви хочете бачити не тільки класи, але й методи, властивості тощо. Єдиний інструмент, який я знаю, що може це зробити, - це Eclipse - якщо ви додасте банку до classpath проекту, ви зможете переглядати його класи методами та властивостями за допомогою звичайного провідника пакетів.
У будь-якому випадку, це гарна ідея для хорошого самостійного інструменту Java
Яд - клунький і більше не підтримується. Я перейшов на "Java Decompiler" , який має гладкий інтерфейс користувача та підтримку нових мовних функцій.
Кожен декомпілятор, який я використав, наштовхується на код, який він не вдало декомпілює. Для них це допомагає зрозуміти розібраний байт-код Java, створений стандартним інструментом JDK, javap .
Ну, jar-файл - це лише zip-файл, тому якщо ви розпакуєте його (за допомогою улюбленої утиліти), ви отримаєте всі файли всередині.
Якщо ви хочете заглянути у файли класу, щоб побачити методи, вам знадобиться інструмент для цього. Як зазначає PhiLho, Eclipse здатний це зробити (за замовчуванням), і я думаю, що більшість Java IDE на це здатні.
У Eclipse 3.4 зробіть
Якщо бачення вихідного коду теж є проблемою, відкрийте нове запитання.
Для навігації на рівні файлу Jar (як zip-файл) я використовую 7zip, який працює дуже добре, і дозволяє переглядати та редагувати записи, що чудово підходить для зйомки проблем.
Один із способів зробити це - відкрити перспективу в "Пакетному досліднику". Роблячи це, ви можете побачити структуру вашої баночки з деталями класу. Для цього перевірте папку бібліотеки у вашому проекті за допомогою програми Explorer.
Вікно >> Показати перегляд >> Інше >> Java >> Провідник пакетів
Інший спосіб - ви можете використовувати JarPlug як плагін затемнення. Це працює в затемнення / джерело джерела
Ви можете відкрити їх за допомогою більшості утиліт декомпресії за ці дні, а потім просто отримайте щось на зразок DJ Java Decompiler, якщо хочете переглянути джерело.
Bndtools надає безкоштовний плагін для перегляду JAR для Eclipse.
Додайте сайт оновлення Eclipse та встановіть лише переглядач.
Моя вимога полягала в тому, щоб переглядати вміст файлу (як файл властивостей) всередині банку, фактично не виймаючи банку. Якщо хтось досяг цієї теми, як я, спробуйте цю команду -
unzip -p myjar.jar myfile.txt
Це добре спрацювало для мене!
Я думаю, що Java Decomplier - це ваш найкращий варіант, який ви можете завантажити тут: http://jd.benow.ca/
Я вважаю за краще браузер JAR , він має простий інтерфейс, де ви можете переглядати декілька JAR і шукати конкретний клас по декількох JAR одночасно.
Цей Jar Explorer досить хороший.
Підтримує три типи декомпілятора: JD, Procyon та Fernflower.
Дозволяє шукати файли та дублікати в будь-якому архіві Java.
Також користувач може змінювати jar за допомогою D&D-файлів та редагувати деякі некласові файли.
Я використовую JarExplorer або JarVisualizer .
Ви можете спробувати JarNavigator для перегляду та пошуку вмісту файлу jar.
Також ви можете використовувати Luyten - відкритий джерело Java Decompiler Gui