.jarファイルの内容の表示


226

JARファイル内のクラス、メソッド、プロパティなどを表示する最も簡単な方法は何でしょうか?非常に便利なLutz Roeder .NETリフレクター-Java用に相当するものを探しています


12
答えを受け入れてみませんか?
Sanghyun Lee

4
@HughLeeこれを尋ねた人は8年前に尋ねました。そのため、回答が100票のIMOに達した後、自動承認が必要になります
Canyon

@KolobCanyonは真実ですが、最高評価の回答は、この回答が求められたのと同じ日に提出されました
Pranav A.

1
答えはから来ている:https://superuser.com/a/808938/1045397あなたはvimのvimのfile_name.jarでそれを行うことができます
バイトマンバ

回答:


280

JDKを使用jar -tfすると、jar内のファイルが一覧表示されます。javap特定のクラスファイルの詳細が表示されます。


3
@salvob tarオプションが必須であるため、ハイフンは必要ありません。
トム・ホーティン-

2
参考までに、システムコマンドとしてC:\Program Files\Java\jdk<version>\bin使用する前に、システムまたはユーザーのPATH環境変数に追加する必要がある場合がありますjar。(<version>はjdkバージョンビルド番号です。チェックインC:\Program Files\Java
Tezra

1
javapの例:javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC '22

非クラスファイル(マニフェストなど)のコンテンツを表示するには、次のようにします:tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC

55

私は通常7-Zipでそれらを開きます...少なくともパッケージとクラスとリソースを見ることができます。
メソッドやフィールドを表示する必要がある場合は、Jadを使用しますが、もちろん、(優れた)JavaDocを使用することをお勧めします...

さて、SOのどこかに、クラスが配置されているjarファイルを見つけるために、いくつかのEclipseプラグインが言及されました。

[編集] SOスレッドへの参照。何が尋ねられるのではなく、何らかの形で関連しているため、有用です。


Jadサイトへのリンクは、URLが保留されているため削除されました。まだweb.archive.org/web/20080106184313/http://www.kpdus.com/…にありますが、Jadは今日では時代遅れです。
PhiLho 2018年

35

私が個人的に使用しているのはJD-GUIです。それはあなたがソースコード、クラス、そしてクラス内のオブジェクトを見ることができ、左側のツリーメニューにファイル構造を見ることができるので、それは無料の「逆コンパイラ」です。ただし、クラスを直接変更することはできません。

JD-GUIのWebサイト:http : //jd.benow.ca/


これはクロスプラットフォームで機能しますが、別の回答で言及されている7-ZipはWindows固有です。
Brad Cupit

OS XでArchive Utilityを使用しましたが、問題なく動作しました。ほとんどの(un)zipユーティリティは、プラットフォームに関係なく機能します。
Greenonline 2015

23

誰かがこれをまだ知らない場合、JARファイルは、プログラムのクラス、リソースなどといくつかのメタデータを含む単なるZIPファイルです。1つを抽出して、どのように組み立てられるかを確認できます。

したがってunzip、覚えやすく使いやすいコマンドを使用しています。

unzip -l <jar-file-name>.jar

たとえば、あなたが名前のjarファイルを持っている場合はtest.jar、その後unzip -l test.jarのjarファイルのすべてのコンテンツを一覧表示されます。

他のすべての答えは素晴らしいですが、ほとんどの場合、これらの大きなソフトウェアのいずれかを必要とせず、Linuxのデフォルトで提供されているようなソフトウェア7 zipJDKEclipseツールを使用する必要があります。 Macなので、非常に軽量で使いやすいです。

も使用できますzipinfo <your jar file>。OSがこれをサポートしている場合。


1
@Boopの提案に感謝します。それを私の答えに追加します
Opster Elasticsearch Ninja

1
ファイルエクスプローラーがzipをサポートしている場合、jarの名前を.zipに変更することもできます(たとえば、Windowsの場合)
Rhayene

16

メソッド名、フィールドなど

IDEでプロジェクトにjarを追加すると、通常はメソッドとフィールド名を表示できますが、詳細な実装は表示できません。NetBeansはそれを行うことができます(おそらくEclipse、IntelliJなど)。IDE内で直接jar構造を参照できます。

内容だけ

コンテンツの表示など、何でも使用できます。

  • jar tvf jarfile.jar
  • winzipまたは任意のzipツール

ソースコード

ソースコードにアクセスするには、JADなどの逆コンパイラ、そのフロントエンドの1つ、または別の逆コンパイラを使用します。コードが難読化されている場合、...



7
jar -tvf file_name.jar

上記はファイルの名前のみを出力します

ファイルの内容を表示するには、次の方法でフォルダー内のファイルを抽出できます

jar -xvf file_name.jar

これにより、jarファイルが解凍され、これを実行しているのと同じディレクトリにコンテンツが配置されます。

または、Windowsで.jarファイルの名前を.zipに変更し、解凍してjarファイルのコンテンツを抽出して表示できます。jarは内部的にはzipファイルなので。


6

WinRarを使用します。そのままフォルダ構造を開きます。パスを保持しながら、アーカイブ内の編集も可能です。

結局のところ、JARファイルはZIPアーカイブのみです。


6

内容を確認したい場合は、以下の最初のオプションとして名前を変更してください。

  1. F2 & Rename to jarfile.zip //任意の解凍を使用...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar


5

私が正しく理解していれば、クラスだけでなく、メソッド、プロパティなども見たいと思います。私が知っている唯一のツールはEclipseです。プロジェクトのクラスパスにjarを追加すると、通常のパッケージエクスプローラーを使用して、メソッドとプロパティを持つそのクラスを参照できます。

とにかく、これは優れたスタンドアロンJavaツールの良いアイデアです。


jarは、単に「libs」ではなく、「Referenced libraries」フォルダにある必要があることに注意してください。また、Apache Commonsライブラリの場合、source.jarを参照せず、元のjarを参照して、Eclipseが要求したときにソースを添付します。
Noumenon 2013

4

ジャドは不器用で、もはや維持されていません。私は「Java Decompiler」に切り替えましたこれは、洗練されたUIと新しい言語機能のサポートを備えています。

ただし、私が使用したすべての逆コンパイラは、正常に逆コンパイルされないコードに実行されます。それらについては、標準のJDKツールjavapによって生成された逆アセンブルされたJavaバイトコードを理解するのに役立ちます


3

まあ、jarファイルは単なるzipファイルなので、(お気に入りの解凍ユーティリティで)解凍すると、すべてのファイルが中に含まれます。

クラスファイルの内部を調べてメソッドを確認する場合は、そのためのツールが必要です。PhiLhoが言及しているように、Eclipseはそれを行うことができ(デフォルトで)、ほとんどのJava IDEはそれができると思います。


3

Eclipse 3.4では

  1. 問題のjarファイルをJavaプロジェクトにドラッグします。jarファイルのコピーが表示されます。
  2. jarファイルを右クリックし、[ビルドパス]-> [ビルドパスに追加]を選択します。
  3. JARファイルは「参照ライブラリ」ノードに移動され、プロジェクトエクスプローラーペインで開いてナビゲートできます。

ソースコードの表示も問題になる場合は、新しい質問を開いてください。

Jarファイルレベルのナビゲーション(zipファイルとして)には、7zipを使用しています。これは非常にうまく機能し、トラブルシューティングに最適なエントリを表示および編集できます。


3

これを行う1つの方法は、「パッケージエクスプローラー」でパースペクティブを開くことです。これを行うと、クラスの詳細でjarの構造を確認できます。これについては、パッケージエクスプローラーを使用してプロジェクトのライブラリフォルダーを確認してください。

ウィンドウ>>ビューを表示>>その他>> Java >>パッケージエクスプローラ

別の方法として、JarPlugをEclipseプラグインとして使用できます。これはeclipse / springsourceで動作します

http://jar-plug.sourceforge.net/


3

Windowsでpowershellを使用していて、jar内のファイルを探している場合は、次のことができます。

jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}

2

最近、ほとんどの解凍ユーティリティでそれらを開くことができます。ソースを表示したい場合は、DJ Java Decompilerのようなものを入手してください。



2

私の要件は、jarを実際に抽出せずに、jar内のファイル(プロパティファイルなど)の内容を表示することでした。私のように誰かがこのスレッドに到達した場合は、このコマンドを試してください-

unzip -p myjar.jar myfile.txt

これは私にとってうまくいきました!



1

私はJARブラウザーを好みます。それは、複数のJARを参照し、同時に複数のJARにわたって特定のクラスを検索できるシンプルなインターフェースを備えています。


1

Eclipse 3.4 JDT

最初に日食にドラッグする必要があるため、これは最も速い方法ではありません。ただし、逆コンパイルが有効になっていても、Javaクラスを完全に参照できます。


1

ウィンドウのデフォルトのアクションを「WinZipで開く」に設定しました。これにより、JARをアーカイブとして簡単に管理できます。ファイルを手動で追加/削除することもできます。


1

このジャーエクスプローラーで十分です。
JD、Procyon、Fernflowerの3つの逆コンパイラタイプをサポートします。
任意のJavaアーカイブ内のファイルと複製を検索できます。
また、ユーザーはD&Dファイルでjarを変更し、一部の非クラスファイルを編集できます。 ここに画像の説明を入力してください ここに画像の説明を入力してください


回答としてツールやライブラリを投稿しないでください。少なくとも答え自体で問題解決する方法を示します
Das_Geek


0

IDEもこれをサポートする必要があります。私のIDE(SlickeEdit)は「タグライブラリ」と呼んでいます。jarファイルのタグライブラリを追加するだけで、クラスとメソッドを階層的に参照できるはずです。






弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.