なぜ CLASS を EXE に変換するのですか?
JVM バイトコードは、実行時に Java Virtual Machine によって解釈されるプラットフォームに依存しない命令セットです。Windows の .exe は、CPU によって直接実行されるネイティブ x86/x64 マシンコードを保持します。これらは共通の命令セットを持たない根本的に異なる形式であり、ネイティブ実行ファイルへの機械的な変換は不可能です。
CLASS から EXE への変換方法
jpackage (JDK 14+) FREE
まず jar cfe app.jar MainClass *.class を使用して .class ファイルを JAR にまとめ、次に jpackage --input . --main-jar app.jar --name MyApp --type exe を実行して、プライベート JRE を同梱した Windows インストーラーを作成します。
Launch4j FREE
まずクラスを JAR にまとめ、次に Launch4j を使用して、実行時にインストール済みの JRE を見つける軽量な .exe スタブで JAR をラップします。
これらの形式について
CLASS ファイルはコンパイルされた Java バイトコードであり、javac が .java ソースファイルから生成する出力です。実行するには Java (JDK) がインストールされている必要があり、«java MyClass» コマンドを使用します。コードの内容を確認するには、JD-GUI などのデコンパイラで開きます。CLASS…
.CLASS の詳細を開く →EXEファイルはWindowsの実行プログラムです。Windowsでは、ダブルクリックして実行します。MacやLinuxでは、CrossOverやWineを使用してください。EXEはWindows以外ではネイティブに動作しません。EXEはWindowsにおけるマルウェア配布の最も一般的な形式であるため、信頼できるソースからのファイルのみを実行してください。
.EXE の詳細を開く →品質と注意点
- 実用的なあらゆるアプローチにおいて、内部では依然として Java が動作しています。
jpackageはプライベート JRE を同梱し、Launch4j は JRE がインストールされている必要があります。Java バイトコードにとって JVM は必須です。 - 任意の
.classファイルを純正な自己完結型.exeに変換できると主張するサイトは誤解を招くものです。そのようなツールは存在しません。 .classからソースを検査または復元するには、JD-GUI や CFR を使用して.javaにデコンパイルしてください。
よくある質問
.class ファイルの名前を .exe に変更して実行できますか?
.class は有効な PE ヘッダーではなく、Java のマジックバイトである CA FE BA BE で始まるため、Windows は即座に失敗します。jpackage は実際に何を生成するのですか?
プロジェクト全体ではなく、単一の .class ファイルをラップできますか?
public static void main エントリポイントがある場合にのみ可能です。ライブラリクラスや断片的なクラスの場合は、まずすべての依存関係を JAR にまとめる必要があります。