Javaのコンパイル方法を徹底解説|javacの使い方と実行手順

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つ挙げます:

オプション意味
-dclassファイルの出力先ディレクトリを指定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:javacjavaは何が違う?
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 で認識されているか確認しましょう。