Linux: какой наиболее удобный способ просмотра содержимого файла .jar


23

Какой наиболее удобный способ просмотра содержимого файла .jar без использования команд unzip / untar? То, что я хотел бы сделать - это просмотреть внутри с помощью cdкоманды, как это обычная папка, увидеть содержимое, размер классов - 'ls -la'.

MCразрешено делать это на лету. Есть ли какая-нибудь легкая в использовании альтернатива?



@ekaj less и unzip мне не помогают - он не показывает мне размер файлов в архиве, например, дату и время последней модификации (если я не распакую его где-нибудь в / tmp / AAA и затем запусту ls -la против / tmp / AAA - чего я хочу избежать).
javagirl

Не разархивируйте файл .zip, просто откройте его. Вы можете увидеть размеры и даты модификации.
cutrightjm

как я могу открыть его в командной строке сервера Linux?
javagirl

@javagirl: unzip -l действительно показать вам размер файлов в архиве и дату и время последней модификации без распаковки пакета. Смотрите мой ответ ниже. На самом деле, это является дубликатом , как ekaj предложил.
DevSolar

Ответы:



12

Используйте vim для просмотра и редактирования содержимого файла JAR без распаковки:

Откройте банку в vim следующим образом:

vim rabbitmq-client.jar

Вам представлен список файлов:

1 " zip.vim version v22
2 " Browsing zipfile /var/www/sandbox/eric/rabbitmq-client.jar
3 " Select a file with cursor and press ENTER
4
5 META-INF/
6 META-INF/MANIFEST.MF
7 com/
8 com/rabbitmq/
9 com/rabbitmq/client/
10 com/rabbitmq/client/impl/
11 com/rabbitmq/client/impl/recovery/
12 com/rabbitmq/tools/
13 com/rabbitmq/tools/json/
14 com/rabbitmq/tools/jsonrpc/
15 com/rabbitmq/utility/

Наведите курсор на META-INF/MANIFEST.MFи нажмите Enter. Ты видишь это:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_31-b31 (Sun Microsystems Inc.)
Export-Package: com.rabbitmq.client;version="3.3.5";uses:="com.rabbitm
 q.client.impl,com.rabbitmq.utility,javax.net,javax.net.ssl,javax.secu
 rity.auth.callback,javax.security.sasl",com.rabbitmq.client.impl;vers
 ion="3.3.5";uses:="com.rabbitmq.client,com.rabbitmq.utility,javax.net
 ",com.rabbitmq.client.impl.recovery;version="3.3.5";uses:="com.rabbit
 mq.client,com.rabbitmq.client.impl",com.rabbitmq.tools;version="3.3.5
 ";uses:="com.rabbitmq.utility",com.rabbitmq.tools.json;version="3.3.5
 ",com.rabbitmq.tools.jsonrpc;version="3.3.5";uses:="com.rabbitmq.clie
 nt",com.rabbitmq.utility;version="3.3.5"
Bundle-Vendor: SpringSource
Bundle-Version: 3.3.5
Tool: Bundlor 1.0.0.RELEASE
Bundle-Name: RabbitMQ Java AMQP client library
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.rabbitmq.client
Import-Package: javax.net;version="0",javax.net.ssl;version="0",javax.
 security.auth.callback;version="0",javax.security.sasl;version="0"

Name: rabbitmq-client
Specification-Title: AMQP
Specification-Version: 0.9.1
Specification-Vendor: AMQP Working Group (www.amqp.org)
Implementation-Title: RabbitMQ
Implementation-Version: 3.3.5
Implementation-Vendor: Rabbit Technologies Ltd. (www.rabbitmq.com)

Измените несколько строк, используя обычные команды редактирования vim.

press 'i' to enter insert mode
edit your lines
press :wq<enter> to write and quit

Вы вернетесь к списку файлов в банке, выйдите.

:q <enter>

Проверьте, являются ли изменения постоянными:

Follow the above steps again to inspect the file again, 
the change should still be there.

Отличный персонал, спасибо. Хотя правильный ответ (как и для меня) распаковать - но этот пример VIM действительно ценится.
Сетевой

почему мой файл jar показывает двоичный файл?
Джон Джо

@JohnJoe: потому что ваш Vim не идентифицирует его как ZIP-архив (который, по сути, является .jar). Это намекает на сломанную или слишком простую настройку Vim. Если эта проблема не устранена, рассмотреть вопрос о принятии его к vi.SE .
DevSolar

1
@JohnJoe, вы должны установить последнюю версию vim: yum install --assumeyes vim-
extension


2

Я думаю, что .jarфайлы в основном .zipфайлы. Так что, я думаю, fuse-zip может сработать.


1
Это ответ, с которым я бы согласился, если вы действительно хотите перейти к ZIP-архиву, как к папке. (или, по крайней мере, так я понял, что это работает)
cutrightjm

Я не могу установить дополнительные компоненты на сервер, если я не задам этот вопрос, просто установив MC
javagirl

1

Просто переименуйте файл .jar в .zip. IE, test.jarк test.zip. Вы сможете увидеть все скомпилированные классы. Однако если вы хотите просмотреть сам источник, вам понадобится декомпилятор.


извини, я не понял в чем разница? я все еще не могу сделать команду ls, cd против * .zip файла.
javagirl

@javagirl. Насколько мне известно, вы можете открывать файлы .zip, нажимая на них, если не собираетесь устанавливать какое-либо дополнительное программное обеспечение. IE, вы не собираетесь записываться на них, потому что они не являются каталогами.
cutrightjm

если бы вы использовали 'mc' в linux, вы бы знали, что вы можете просматривать содержимое файла zip / jar, потому что это позволяет разархивировать на лету. Мой вопрос был об альтернативе «mc», потому что я слышал, как многие гуру linux говорят, что они могут избегать «mc» и использовать чистую командную строку с тем же результатом и эффективностью. И я не могу «щелкнуть» по zip-файлу, поскольку я нахожусь в командной строке сервера Linux
javagirl

Ну, это альтернатива.
cutrightjm

0

Вы можете использовать ssh mount для локальной файловой системы сервера. После этого вы можете использовать любое локально доступное программное обеспечение для навигации по файловой системе, например Far Manager, очень мощное средство для навигации в архивах.

В этом решении вам не нужно никакого дополнительного программного обеспечения на сервере, только sshd.


0

Если вы хотите увидеть содержимое в указанном порядке, как я:

jar tvf jarfile.{e,j,w}ar | sort -k 7,7 -k 3,3M -k 4,4n -k5,5


0
  • Для просмотра содержимого: jar tvf jarfile.jar
  • Извлекать: jar xvf jarfile.jar

Это может быть хорошим ответом, но вы должны попытаться сделать его более «громким». Ответы, которые могут вписаться в одну или две строки, обычно лучше использовать в качестве комментариев (если у вас достаточно повторений).
Анаксунаман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.