Javaを学び始めると、まず最初に壁になるのが「コンパイル」です。ソースコード(.java)を書いただけでは動かず、javacコマンドでコンパイルし、.classファイルを生成して初めて実行できます。本記事では、Javaのコンパイル手順・javacの基本的な使い方・PATH設定・よくあるエラーの対処まで、初心者でも一つずつ理解できる流れでまとめました。「Javaのコンパイルって何から始めればいい?」という状態から、迷わず手を動かせるようになることがゴールです。
Javaコンパイルとは?|初心者でも分かる「コンパイル」の意味
Javaにおける“コンパイル”とは、人間が書いたソースコード(.java)を、Java仮想マシン(JVM)が読める形式へ変換する処理のことです。
この変換によって生成されるのが「.class」ファイルで、これをバイトコードと呼びます。
JavaはC言語などの“ネイティブへ直接コンパイルする方式”とは異なり、一度バイトコードに変換してから、JVM上で動作するのが特徴です。
この仕組みによって、OSが違っても同じ.classファイルを動かすことができ、Windows/macOS/Linuxで同じJavaプログラムを実行できるというメリットが生まれています。
もう一つ押さえておきたいのは、コンパイルと実行は別の操作であるという点です。
- 「javac」 → コンパイル担当
- 「java」 → 実行担当
初心者の9割は、この違いが曖昧なまま躓きがちです。
まずはこの“2つの役割が違う”という理解を固めることが、最も効率の良い第一歩になります。
Javaコンパイルに必要な準備
Javaをコンパイルするためには、JDK(Java Development Kit)がインストールされていることが前提になります。
JREだけではコンパイルができません。なぜなら、コンパイルを担当する javac はJDKに含まれる開発者向けツールだからです。
まずは以下の確認から始めます:
javac -versionこのコマンドを実行して、バージョンが返ってくればOKです。
もし「コマンドが見つかりません」などと表示される場合、下記の可能性が高いです。
- JDKがインストールされていない
- インストールしたけれど PATH が通っていない
- JREだけ入っている(開発キットが無い)
特に PATH設定 は日本人ユーザーが最初に詰まりやすいポイントです。
javac.exe(またはbinディレクトリ)までのパスがシステムに認識されていなければ、コンパイルは実行できません。
結論:
「JDKの準備」と「PATHの確認」 が整って初めて Java コンパイルのスタートラインに立てます。
Javaファイルを実際にコンパイルしてみる
ここでは、実際にサンプルコードを作成して、javacでコンパイルする手順を確認していきます。
まずは、テキストエディタで次の内容を保存します。
Sample.java
public class Sample {
public static void main(String[] args) {
System.out.println("Hello Java!");
}
}ファイル名は「Sample.java」とし、public class名とファイル名が一致していることが重要です。
Javaはこのルールを破るとコンパイルが通りません。初心者が最初に躓く典型例です。
次に、ターミナル/コマンドプロンプトで下記を実行します。
javac Sample.java正常に処理されると、同じフォルダに Sample.class が生成されます。
これが「コンパイル完了」の証拠です。
つまり、ここまでで:
- Sample.java(ソース)
- Sample.class(バイトコード)
このペアが揃います。
ここまで出来ると「javaプログラムを動かす準備」が整った状態になります。
コンパイル後の実行方法
コンパイルが完了したら、次は .class ファイルを実行します。
ここで使うコマンドは java です。javac ではありません。
java Sampleここでのポイントは 拡張子 .class を書かない ことです。java Sample.class と書くとエラーになります。
Javaはクラス名を指定する形で実行する設計になっています。
整理するとこうなります:
| 役割 | コマンド | 対象 |
|---|---|---|
| コンパイルする | javac Sample.java | .java ファイル |
| 実行する | java Sample | クラス名(拡張子無し) |
ここで「javac」と「java」の役割の切り替えを理解できると、初心者ステージをクリアした状態です。
実際に試して「Hello Java!」と表示されれば成功です。
ここまで問題なく動けば、Javaの最低限の“流れ”は掴めています。
頻出エラーと対処法
Javaのコンパイルでは、最初のうちはエラーに遭遇するのが普通です。
ここでは、日本語ユーザーが特に多くつまずく原因に絞って整理します。
1)javac: command not found / 'javac' は内部コマンド...ではありません
原因のほぼ100%は下記のどちらかです。
- JDKがインストールされていない
- PATHが通っていない
対策:javac -version で確認
→ 出ないならJDK再インストール+PATH設定を見直す
2)コンパイルは成功するが .class が生成されない
日本人が最も多いミスはこれです:
ファイル名とpublicクラス名が違っている
例)Sample.java の中身が
public class Test {
}→ これはコンパイルエラーになる
3)文字コード系の警告
warning: [options] bootstrap class path not set in conjunction with -source 1.7などの英語警告は、基本的には致命的エラーではありません。
ただし古いバージョン指定や異なるエンコーディングで保存している可能性があるため、
文字コードは UTF-8 で保存しておくのが確実です。
IDEを使ったコンパイル
実務のJava開発では、毎回コマンドプロンプト/ターミナルで javac を叩くケースは多くありません。
理由は、IDE(統合開発環境)が裏側で自動的にコンパイルをやってくれるからです。
特に下記3つは国内でも利用者が多く、学習でもそのまま実務感が身につきます。
| IDE | 特徴 |
|---|---|
| IntelliJ IDEA | 現代Java開発の実質スタンダード。プロ用途まで行ける。 |
| Eclipse | 歴史が長く、業務案件で採用例も多い。 |
| VSCode | 軽量。Java Extension Pack を入れると環境が整う。 |
IDEでは、ファイル保存のたびに自動コンパイルされ、エラー箇所も即座に可視化されます。
つまり「javacの入力ミス」「パスの設定ミス」といった“初歩的な設定の壁”を一気に回避できます。
ただし、Javaの仕組みを理解するうえでは一度は手作業でjavacを経験する価値があるのも事実です。
“コンパイル → 実行” の流れを手元で一度理解しておくと、IDE使用時の理解速度が格段に上がります。
javacオプションの基礎
javacは単に「.java → .class に変換するだけ」ではなく、さまざまなオプションを付けてコンパイル方法を制御できます。
ただし、初学段階ではすべて覚える必要はなく、「よく使う代表」だけ理解しておけば十分です。
代表的なものを3つ挙げます:
| オプション | 意味 | 例 |
|---|---|---|
-d | classファイルの出力先ディレクトリを指定 | javac -d out Sample.java |
-classpath | 外部ライブラリや別フォルダのクラスパスを指定 | javac -classpath lib/* Sample.java |
--enable-preview | 新しい言語仕様のプレビュー機能を有効化 | javac --enable-preview Sample.java |
特に -d は、パッケージを利用する時に必須レベルで使います。
例えば package com.example; といった階層構造を使う場合、javac -d を使わないと出力先のディレクトリ配下が正しく生成されません。
実務に入るほど、クラスパス指定と-d指定は使用頻度が急増します。
この段階で「名前だけでも見ておく」だけで後の理解がスムーズになります。
まとめ
Javaでプログラムを動かすためには、ソースコードを書く → コンパイルする → 実行する という3ステップの理解が不可欠です。
特に javac(コンパイル)と java(実行)の役割が頭の中で整理されると、「なぜコンパイルが必要なのか」が一気にクリアになります。
また、初心者がハマりやすいのは以下の2点です。
- JDKが入っていない/PATHが通っていない
- ファイル名とpublicクラス名が一致していない
この2つさえ先に潰しておけば、コンパイルの学習段階で大きく回り道をせずに済みます。
慣れてきたらIDEでの開発に移行しても問題ありません。
しかし「中身の仕組み」を理解しているかどうかが、後の理解速度に差を生みます。
今回の記事を起点に、まずは一つ .java → .class を成功させるところから始めてください。
そこが、Java学習の最初の達成ポイントです。
FAQ:Javaのコンパイルでよくある質問
Q1:javacとjavaは何が違う?
A:javacは「コンパイルするコマンド」です。.javaファイルを .class に変換します。
一方で java は「実行するコマンド」です。.class をJVM上で動かします。
Q2:Sample.class が生成されません。原因は?
A:最も多い原因は、ファイル名とpublic class名が一致していないケースです。
public class Sample なら、ファイルは Sample.java にする必要があります。
Q3:IDEを使っている場合、javacはもう覚えなくてもいい?
A:IDEは裏側で自動コンパイルしていますが、仕組みが分からないまま使うと“何が起きているか”が掴みにくくなります。基本の流れを一度体験しておくと、IDE移行後の理解が速くなります。
Q4:JDKはどれを入れればいい?
A:初学者なら Temurin(Eclipse Adoptium)のLTS版が扱いやすいです。
特に理由がなければ Java 17 か 21 を選べば問題ありません。
Q5:javac: command not found が出ます
A:JDKが入っていないか、PATHが通っていない状態です。
まず javac -version で認識されているか確認しましょう。


![【Java入門】コマンドライン引数の使い方を完全解説|String[] argsの基本・応用・実践例まで](https://www.java.digibeatrix.com/wp-content/uploads/2025/11/6e52cde59f69dc2bb93feaad54e5d8f8-375x250.png)