2016-09-19 10 views
7

私は非常に混乱しています。 * .jarファイルをソフトウェアの一部としてダウンロードしました。だから、私は、私は2つの*.jarファイルと*.classファイルを返されたコマンドjar xf filename.jarMac上の* .jarファイルからソースコードを抽出するにはどうすればよいですか?

を使用し、それに

を探すために、ソースコードを抽出したいと思います。私はまだ標準のテキストエディタで端末でこれらを開くことができません。

おそらく、これはオープンソースソフトウェアではありませんか?ここで何が行われたかを見るための代替手段はありますか?

+2

の.classファイルが*ない*ソースコード、Javaオブジェクト・コードです。 jarにはソースコードを入れる必要はありません。 –

+0

@JamesKPolkわかりました。彼らが書いたコードを見る方法はありませんか? – ShanZhengYang

+0

あなたはsrcではなくlibをダウンロードしたようですが、内容を見るにはjar tf filename.jarを使います。 – chifer

答えて

9

ファイル名を指定して実行 "java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar"

これはインテリJ &アンドロイド-Studioの逆コンパイラが何をするかであります。

注:Fernflowerは.javaファイルを.jarファイルに抽出します。 jarファイルを通常のzipファイルとして解凍するか(OSX上のArchive Utilityのバージョンで許可されている場合 - OSX Sierra上では動作しませんが、El Capitanで動作します)、またはjar xf DecompiledJarを実行できますそれを抽出する。

例(一つのコマンド内のすべて - &&で区切られた複数のコマンド):

java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar && cd DecompiledJar && jar xf DecompiledJar.jar && cd ../

+0

'java -jar fernflower.jar -dgs = true J​​arToDecompile .jar DecompiledJar'はちょうど問題のJARファイルと全く同じサブディレクトリを返します – ShanZhengYang

+1

サブディレクトリにあるファイルを開きます。これは単なるzipファイルで、たくさんのJavaソースファイルが入っています。 – Brandon

+0

名前をzipファイルに変更して解凍する必要がありますか? – ShanZhengYang

2

jarファイルにはソースコードが含まれていますが、より一般的にはクラスファイルのみが含まれています。クラスファイルは通常、実行のためのものであり、ソースを抽出するものではありません。

クラスファイルをソースコードに逆コンパイルすることはできますが、逆コンパイルされたコードは元のソースコードほど役に立ちません。

オープンソースの場合は、jarファイルをダウンロードしたサイトに戻ってソースを探します。それはZipファイルにダウンロードされるかもしれませんし、jarファイルにダウンロードされているかもしれませんし、Gitのような何らかのリポジトリにあって、適切なソフトウェアで接続できるかもしれません。

関連する問題