95

インターンとして、私は自分のプロジェクトで企業コードを使用しており、通常はjar作業用のファイルが送られてきます。path私はそれを組み込みに追加しますがEclipse、通常はすべてがうまくいきます。

しかし、各クラスに何が含まれているのか知りたくて、ファイル内のクラスの 1 つを開こうとするとjar、ソース ファイルが必要であると表示されます。

これは何を意味するのでしょうか?私はC/C++のバックグラウンドを持っているので、既にコンパイルされたファイルにjar似ています。または、私が使用しているファイルに暗号化されているため、読み取ることができない実際のコードがありますか?.o.hjar

すべての答えをありがとう!

編集:
ありがとう、みんな、それがアーカイブのようなものであることは知っていましたが、ファイルを開こうとしたときに.class、ランダムな文字がたくさん表示された理由に混乱しました. Cでファイルを開こうとしたときの出力は似て.oいたので、確認したかっただけです。
ありがとう!

4

12 に答える 12

94

JAR ファイルは、実際には単なる ZIP ファイルです。通常、コンパイルされた Java コード (*.class) が含まれますが、Java ソースコード (*.java) が含まれることもあります。

ただし、Java は逆コンパイルできます。開発者がコードを難読化した場合、有用なクラス/関数/変数名は得られません。

于 2012-08-22T18:31:14.283 に答える
57

しかし、各クラスの内容に興味があり、jar ファイル内のクラスの 1 つを開こうとすると、ソース ファイルが必要であると表示されます。

jar ファイルは、基本的に .class ファイルとその他のリソース (および jar 自体に関するメタデータ) を含む zip ファイルです。C と Java を実際に比較するのは困難です。Java バイト コードはほとんどのバイナリ形式よりも多くのメタデータを保持しているためです。ただし、クラス ファイルソース コードではなくコンパイルされたコードです。

jar ファイルを zip ユーティリティで開くか実行jar xf foo.jarすると、そこからファイルを抽出して確認できます。Java コードを実行するのに jar ファイルは必要ないことに注意してください。クラスローダーは、jar ファイルだけでなく、ファイル システムや URL からも直接クラス データをロードできます。

于 2012-08-22T18:31:33.077 に答える
19

jar ファイルの内容を理解する最善の方法は、これを実行することです。

コマンドラインに移動して実行しますjar tvf jarfilename.jar

于 2012-08-22T18:30:53.860 に答える
15

ファイルは、メタデータを含むいくつかのjar追加ファイルを含む zip ファイルです。(.jar 拡張子にもかかわらず、それは zip 形式であり、.zip ファイルを処理するユーティリティは .jar ファイルも処理できます。)

http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html

Jar ファイルにはあらゆる種類のファイルを含めることができますが、通常はクラス ファイルとサポート構成ファイル (プロパティ)、グラフィックス、およびアプリケーションに必要なその他のデータ ファイルが含まれます。

クラス ファイルには、Java 仮想マシンで実行可能なコンパイル済みの Java コードが含まれています。

http://en.wikipedia.org/wiki/Java_class_file

于 2012-08-22T18:33:48.037 に答える
5

Jarファイルには、コンパイルされたJavaバイナリクラスが含まれており、オープンソースの逆コンパイラを使用して逆コンパイルすることにより*.class、読み取り可能なクラスに変換できます。.javajarには、jarファイルの使用方法を示すオプションもありMETA-INF/MANIFEST.MFます-jarでロードするための他のjarファイルを指定します。

于 2012-08-22T18:36:40.130 に答える
3

Jar(Java アーカイブ) には、.class ファイルのグループが含まれています。

1.Jarファイル(Zipファイル)の作成

 if one .class (say, Demo.class) then use command jar -cvf NameOfJarFile.jar Demo.class (usually it’s not feasible for only one .class file)

 if more than one .class (say, Demo.class , DemoOne.class) then use command jar -cvf NameOfJarFile.jar Demo.class DemoOne.class

 if all .class is to be group (say, Demo.class , DemoOne.class etc) then use command jar -cvf NameOfJarFile.jar *.class

2.Jarファイルを解凍する(Unzip File)

    jar -xvf NameOfJarFile.jar

3.目次を表示する

    jar -tvf NameOfJarFile.jar
于 2016-06-06T08:22:57.183 に答える
2

.jar ファイルは .exe ファイルに似ています。要するに、どちらも実行可能な zip ファイルです (異なる zip アルゴリズム)。

jar ファイルには、フォルダーとクラス ファイルが表示されます。各クラス ファイルは .o ファイルに似ており、コンパイルされた Java アーカイブです。

jar ファイル内のコードを確認したい場合は、Java デコンパイラ (ここにあります: http://java.decompiler.free.fr/?q=jdgui ) と .jar エクストラクタ (7zip は正常に動作します) をダウンロードします。

于 2012-08-22T18:32:23.090 に答える
1

JD-GUIは、JARを参照および逆コンパイルするための非常に便利なツールです。

于 2012-08-22T18:52:37.063 に答える
1

.jar ファイルには、コンパイルされたコード (*.class ファイル) とそのコードに関連するその他のデータ/リソースが含まれています。複数のファイルを 1 つのアーカイブ ファイルにまとめることができます。また、メタデータも含まれています。zipファイルなので、入れたデータを圧縮することができます。

私が便利だと思ったことがいくつかあります。

http://www.skylit.com/javamethods/faqs/createjar.html

http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html

本 OSGi では、実際に JAR ファイルを次のように定義しています。さらに、この仕様では、メタデータ用の JAR アーカイブ内の標準的な場所 (META-INF フォルダー) と、その中のいくつかの標準的なファイル名と形式を直接定義しています。その中で最も重要なのは MANIFEST.MF ファイルです。"

于 2013-07-19T05:05:11.410 に答える
1

ファイルにファイルではなくaopalliance.jarファイルがあるかどうかを確認してください。その場合は、jar ファイルを抽出し、それを Eclipse にインポートして、Eclipse で jar を作成します。それは私のために働いた。.java.class

于 2016-03-08T07:41:17.790 に答える