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

23

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

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

javagirl
источник
@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
8

Этого всегда было достаточно для меня:

unzip -l <jarfile>

DevSolar
источник
2

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

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

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

cutrightjm
источник
извини, я не понял в чем разница? я все еще не могу сделать команду 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

JStrahl
источник
0
  • Для просмотра содержимого: jar tvf jarfile.jar
  • Извлекать: jar xvf jarfile.jar
Ати
источник
Это может быть хорошим ответом, но вы должны попытаться сделать его более «громким». Ответы, которые могут вписаться в одну или две строки, обычно лучше использовать в качестве комментариев (если у вас достаточно повторений).
Анаксунаман