web-dev-qa-db-ja.com

Java warファイルからソースコードを取得する方法


最新のソースコードはありませんが、サーバーにwar(最新)ファイルがデプロイされています。

最善の方法を提案してください
1)war/earからソースコードを取得する
2)利用可能なソースコードをwar/earにあるが利用可能なソースコードにないコードと比較およびマージ/更新します(Eclipse IDEを使用しています)

前もって感謝します

6
Karthik

Warファイルは基本的にZipファイルなので、簡単に抽出できます。 (解凍を使用するか、ファイル名を変更するだけ)次に、Java JDのような逆コンパイラを使用できます。ただし、元のJavaコードをコンパイラとして取得することはできません。多くの最適化を行いますが、それはあなたに良い出発点を与えるはずです

11
zeisi

EAR/WAR/Jarsからクラスを抽出したら、JADを使用して、必要なコードを逆コンパイルしてソースに戻ります。 http://varaneckas.com/jad/

ただし、元のソースとJADなどから生成された逆コンパイルされたソースを比較/比較する、すぐに使用できるツールがあるかどうかはわかりません。また、クラスをソースに逆コンパイルしても、元のソースと同じように見えるソースが生成されることはありません。コードスタイルは異なる場合があり、コードの構造さえも異なります。元のソースと逆コンパイルされたソースを比較するのは難しいでしょう。

元のソースはあるが、現在デプロイされているコードのソースがない場合は、「なぜしないのか」を質問するのがよいでしょう。各ビルドで使用されているソースを追跡していないビルドプロセスで何かが欠けている場合は、他のソース間の差分のように不器用でエラーが発生しやすいものを試みるのではなく、これを解決する方が簡単な問題である可能性がありますそして逆コンパイルされたソース?

3
Kevin Hooke

正確な答え:warjarアーカイブ)ではなく、Javaから元のソースコード(.Javaファイル)を取得することはできません。 jarファイルを作成するときに、.Javaファイルを含めるかどうかを決定できます。 Javaデコンパイラのみが役立ちます。他の回答を参照してください。

3
Timo

JD GUI を使用すると、Javaコードでソースコードを作成できますが、次のことを行う必要があります

0
user1400290

Warフォルダー内の特定のモジュールの下-プロジェクト階層に基づいて(mavenプロジェクトの場合-これらの構成はPom.xmlで使用できます-これは、どのパスとどのjar名を定義します)、各モジュールのコアJARファイルがあります。

逆コンパイラを使用してこれらのjarファイルを開くと、その中にクラス/ Javaファイルを見つけることができます。

0
Arasn