使用しているjarライブラリを解凍したいのですが、コア機能がGitHubに表示されているものに更新されているかどうか、クラスを確認してください。
.jarファイルをどのように解凍しますか?
アップデート:
直接解凍すると、ソースコードが添付されていないとクラス.txtを取得できません。
おかげで、Java Decompilerを使用するalegenの方法のおかげで、クラスを逆コンパイルすることができます。
WinRARでファイルを開きJAR
ますが、他の人もパッケージ化していない限り、を含むファイルsource code
しか見つかりません。また、 ;を使用する必要があります。私は通常、JDJavaDecompilerを使用します。.class
bytecode
decompiler
jar
プレーンなZIPファイルツールや、もちろんJDKの一部として提供されるコマンドなど、さまざまなツールを使用して、JARファイルからファイルを抽出できます。
実際の問題は、JARファイル内の.classファイルを逆コンパイルして、Javaソースコードと比較できるようにすることです。
まあ、悪いニュースはそれが機能しないということです...特に大規模では。はい、Javaに似たものを(良い日に)生成する逆コンパイラがあります。でも:
逆コンパイルされたJavaは、.classファイルの生成に使用された元のソースコードのようには見えません。逆コンパイルされたファイルを元のソースコード(または元のソースコードに基づくもの)と比較することは、退屈で難しい手動プロセスになります。
逆コンパイルされたコードが有効な(コンパイル可能な)Javaでさえない可能性はかなりあります。
より良いアプローチは、GitHubでソースコードをコンパイルし、2つのバージョンの.classファイルを比較することです。ただし、それでも簡単ではありません。理由は次のとおりです。
.classファイルには、タイムスタンプや、ビルドパスやコンパイルスイッチなどに依存するその他のものが含まれています。.classファイルを比較するときに、この「ノイズ」を取り除く方法を理解する必要があります。
Javaコンパイラのバージョンが異なれば、クラスファイルのフレーバーも異なります。
クラスファイルのバージョン番号が同じであっても、生成されるバイトコードにはコンパイラバージョン固有の違いがある可能性があります。
小規模な比較の場合、問題に取り組む準備ができていれば、逆コンパイルでうまくいく可能性があります。javap
クラスファイルのバイトコードを出力し、出力を比較するために使用することもできjavap
ます。
では、2つのjarが同じであるかどうかを確認し、githubのメソッドがjarのメソッドと同じであることを確認する必要がありますか?
ここで間違った問題を解決しようとしていると思います。あなたがすべきことは、githubからコードをチェックアウトして自分でビルドすることです。プロジェクトのルートディレクトリには、README、INSTALLなどのファイルがあります。
もちろん、プロジェクトの最新バージョンは必要ないかもしれません。最新の安定したリリースなどが必要な場合もあります。これは完全に実行可能です。必要なリリースをgitからダウンロードして、自分でビルドするだけです。これで、コードとjarの両方ができました。
これを行うと、コードがjarに一致することが保証され、readmeファイルで指定されているように、簡単な作成または後で実行するだけで、厄介な逆コンパイルは必要ありません。