Linux:.jarファイルのコンテンツを表示する最も便利な方法は何ですか


23

unzip / untarコマンドを使用せずに.jarファイルのコンテンツを表示する最も便利な方法は何ですか?私は何をしたいこと-使用して内部のブラウジングにある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でjarを開きます。

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

jar内のファイルのリストに戻り、終了します。

:q <enter>

変更が永続的かどうかを確認します。

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

素晴らしいスタッフ、ありがとう。(私にとっては)正しい答えは解凍ですが、そのvimの例は本当にありがたいです。
setevoy

jarファイルの内容がバイナリファイルを表示しているのはなぜですか?
ジョンジョー

@JohnJoe:VimはそれをZIPアーカイブ(.jarは事実上そうです)として識別しないためです。これは、壊れた、または基本的なVimセットアップのヒントです。問題が解決しない場合は、vi.SEに持ち込むことを検討してください
-DevSolar

1
@JohnJoe、最新のvimをインストールする必要があります。yuminstall --assumeyes vim-enhanced
TraxX


2

.jarファイルは基本的に.zipファイルだと思います。したがって、fuse-zipが機能する可能性があると思います。


1
これは、フォルダーのような.zipアーカイブに実際に移動したい場合に私が行く答えです。(または、少なくとも、それが動作することを理解した方法です)
-cutrightjm

MCをインストールするだけでこの質問をしない限り、サーバーに追加のものをインストールすることはできません
javagirl

1

.jarファイルの名前を.zipに変更するだけです。IE、test.jartest.zip。コンパイルされたすべてのクラスを見ることができます。ただし、ソース自体を表示する場合は、逆コンパイラが必要になります。


すみません、わかりませんでした。違いはなんですか?* .zipファイルに対してls、cdコマンドを実行できません。
javagirl

@javagirl私が知っている限り、追加のソフトウェアをインストールしない場合は、それらをクリックすることでのみ.zipファイルを開くことができます。IE、それらはディレクトリではないので、それらにcdするつもりはありません。
cutrightjm

Linuxで「mc」を使用する場合、zip / jarファイルのコンテンツを参照できることを知っていました。これはオンザフライで解凍するためです。私の質問は、「mc」の代替案についてでした。なぜなら、「mc」を避け、同じ結果と効率で純粋なコマンドラインを使用できると言っている多くのLinuxの第一人者を聞いたからです。Linuxサーバーのコマンドラインを使用している限り、zipファイルを「クリック」することはできません
-javagirl

まあ、これは代替です。
cutrightjm

0

sshマウントを使用して、サーバーのファイルシステムをローカルに保持できます。その後、ローカルで利用可能なソフトウェアを使用してファイルシステムをナビゲートできます。たとえば、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

これは潜在的に良い答えのように思えますが、あなたはそれを「ビーファイヤ」にしようとするべきです。通常、1行または2行に収まる回答は、コメントとして(一般的には十分な担当者がいる場合)通常は良いでしょう。
アナクスナマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.