Cookie の使用について.本サイトでは、基本機能の提供に必要な必須 Cookie を使用しています。さらに、同意いただいた場合に限り、アクセス解析 Cookie を利用して利用状況を把握し、サービス改善に役立てます。詳しくは .
このツールは使いやすかったですか?
フィードバックは改善に役立ちます
Java の class、JAR、WAR、EAR ファイルから読みやすいソースを再構成し、ZIP でダウンロードできます。
ファイルを選択ここにファイルをドロップするか、クリックして選択
.class · .jar · .war · .ear
最大 1 MB
アップロード上限:ゲスト 1 MB、会員 2 MB、アドバンス 5 MB、プロ 20 MB。
難読化、最適化、デバッグ情報の欠落、WAR/EAR 内のネストされた JAR により結果が変わる場合があります。
概要
解決できる課題、処理の仕組み、データの範囲を確認できます。
Java コンパイラーはクラスやインターフェースを、Java 仮想マシンが読み取るバイナリ形式の class ファイルに変換します。class ファイルには定数プール、フィールド、メソッド、バイトコード命令、属性などが含まれます。逆コンパイラーは残っている情報をもとに Java に近いソースを再構成します。これはロジックの確認に役立ちますが、元のプロジェクトをそのまま取り戻す処理ではありません。
このツールは単一の .class、または class ファイルを含む .jar、.war、.ear を受け付け、プレビュー可能なソースを ZIP にまとめます。JAR はライブラリーやアプリの配布に、WAR と EAR は Web アプリや企業向けアプリのパッケージによく使われます。アーカイブ内にさらに JAR がある場合、入れ子の内容まで順に展開して逆コンパイルできるとは限りません。
Java 仮想マシン仕様では、class ファイルをハードウェアや OS に依存しないバイナリ形式として定義しています。SourceFile や LocalVariableTable などのデバッグ属性は任意のため、保存されていないソースファイル名、ローカル変数名、デバッグ情報は復元できないことがあります。Oracle『Java 仮想マシン仕様』§2.1 では class ファイル形式を、第 4 章では構造と属性を説明しています。Java SE 21 の仕様で、2026-09-28 に確認しました。
使い方
手順に沿って操作し、例を使って入力と結果を確認します。
.class、.jar、.war、.ear のいずれかを選びます。パッケージ全体を確認したい場合は、関連する class を含むアーカイブを選ぶと一度に多くの情報を調べられます。
アップロード欄にドロップするか、ファイル選択をクリックします。1 ファイルの上限はアカウントにより異なり、ゲスト 1 MB、通常会員 2 MB、アドバンス会員 5 MB、プロ会員 20 MB です。超過する場合は、必要なファイルだけを選ぶか、事前にアーカイブを分割してください。
処理後、ファイル名で絞り込み、プレビューできるテキストを開きます。まずパッケージ名、クラス名、メソッド本体、主要な分岐を見て、必要な情報が含まれているか確認します。
結果をまとめた ZIP を保存します。これは復元されたソースの出力であり、そのままビルドできる元プロジェクトではありません。依存ライブラリー、ビルド設定、リソース、構成ファイルは自動では補完されません。
結果が空、または形式エラーになる場合は、Java バイトコードを含むファイルか、破損や暗号化がないか、入れ子のアーカイブだけを選んでいないか確認してください。大きな企業向けパッケージは、対象モジュールを先に選ぶと不要なクラスと転送時間を減らせます。
活用例
仕事や日常の流れの中での活用方法を紹介します。
ソースディレクトリーを失っても class や JAR が残っていれば、メソッドの動作を読み、実装を手作業で復元する手掛かりを得られます。出力は調査の出発点として扱い、元ソースと一行ずつ同じだとは考えないでください。
解析する権利のあるソフトウェアについて、新旧アーカイブのクラス、メソッド、呼び出し経路を比較し、動作変更や互換性の問題を調査できます。必要なモジュールが分かっている場合は、その JAR や class を選びます。
小さな例を class にコンパイルして出力と見比べると、ループ、条件分岐、ジェネリック署名、例外処理がどのような形で残るかを確認できます。コンパイル時に失われる情報を理解する教材にもなります。
いずれの用途でも、入力ファイルに認識可能な Java class が必要です。ソースだけの JAR、バイトコードを含まないアーカイブ、別の JVM 言語で作られたファイルでは、空の結果や異なる書式のコード、処理エラーになる場合があります。
Q&A
よくある疑問や迷いやすい点をまとめて確認できます。
一致するとは限りません。コメント、空白、変数名、ソース上の構造はコンパイル時に失われることがあります。逆コンパイラーは残ったバイトコードと属性から読みやすいコードを再構成するため、解析向けの結果として扱ってください。
選択したアーカイブ内の認識可能なクラスは処理しますが、入れ子の JAR を再帰的にすべて展開したり、外部の依存ライブラリーを取得したりする保証はありません。必要な型が見つからない場合、参照が未解決のまま残ることがあります。
ファイルの破損、未対応の class ファイル形式や属性、難読化、暗号化、依存クラスの不足などが原因になります。対象クラスだけを選ぶか、必要な依存情報を含むアーカイブを試してください。
保証されません。ZIP は生成されたソースをまとめたもので、元の依存ライブラリー、リソース、ビルド設定、モジュール構成を含むとは限りません。再ビルドには不足分の追加とコード確認が必要です。
注意
利用範囲、結果の制限、必要な注意点を事前に確認します。
逆コンパイルはコンパイル済みデータからの近似的な再構成であり、復号ではありません。難読化、コンパイラーの最適化、デバッグ属性の欠落、言語機能、外部依存関係によって、読みやすさや構造が変わります。修正や公開に使う前に、プロジェクトを理解する人が内容を確認してください。
ファイルはクラウド処理のためにアップロードされます。入力と結果はサービスのストレージ・ライフサイクル規則に従って削除され、処理完了と同時に消えるとは限りません。パスワード、鍵、個人情報、業務秘密、解析権限のない第三者のプログラムは送信しないでください。適用されるソフトウェアライセンスと法律も確認してください。
出力はコード理解、互換性調査、学習を支援するもので、元プロジェクトの完全性やビルド可能性を保証しません。
関連
関連ツール、特集、利用可能なAPIを探せます。