カテゴリ: JavaSilver試験対策 更新日: 2026/03/24

Javaのプログラム実行方法を完全解説!初心者でもわかるjavacとjavaコマンドの使い方

009
Javaのプログラム実行方法

先生と生徒の会話形式で理解しよう

生徒

「Javaプログラムをコマンドで実行する方法がいまいち分かりません。javacjavaって何が違うんですか?」

先生

「いい質問ですね!javacはJavaソースコードをコンパイルするコマンド、javaはコンパイル済みのクラスを実行するコマンドです。それぞれの役割と使い方を詳しく見ていきましょう。」

生徒

「なるほど!プログラムの実行フローが分かりそうです!」

1. Javaプログラムの基本的な実行手順

1. Javaプログラムの基本的な実行手順
1. Javaプログラムの基本的な実行手順

Javaプログラムを実行する際の基本的な手順は以下の通りです。

  1. ソースコードを作成し、.javaファイルに保存する。
  2. javacコマンドを使ってソースコードをコンパイルし、.classファイルを生成する。
  3. javaコマンドを使って、生成された.classファイルを実行する。

以下は具体例です。


public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}

上記のプログラムをHelloWorld.javaとして保存し、次のコマンドを実行します。


> javac HelloWorld.java
> java HelloWorld

出力:


Hello, Java!

この手順がJavaプログラムの基本的な実行方法です。

2. Java SE 11以降での直接実行

2. Java SE 11以降での直接実行
2. Java SE 11以降での直接実行

Java SE 11以降では、javacコマンドを使わずにjavaコマンドだけでソースコードを実行することが可能です。この機能は「ソースファイルモード」と呼ばれます。

次のように実行します。


> java HelloWorld.java

出力:


Hello, Java!

この方法では、javacで明示的にコンパイルしなくても、javaコマンドがバックグラウンドでコンパイルを行い、プログラムを実行します。

3. コマンドの注意点と他のコマンド

3. コマンドの注意点と他のコマンド
3. コマンドの注意点と他のコマンド

Javaプログラムを実行する際の注意点と、他の関連コマンドを紹介します。

  • javap: クラスファイルの内部構造を確認できます。
  • jmod: モジュールを管理するためのコマンドです。
  • ソースファイルモードでは、ファイル名とクラス名が一致していなくても実行可能です。

以下は、クラス名とソースファイル名が一致していない場合の例です。


public class Sample {
    public static void main(String[] args) {
        System.out.println("クラス名とファイル名が一致していません!");
    }
}

これをTest.javaとして保存し、次のように実行します。


> java Test.java

出力:


クラス名とファイル名が一致していません!

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. javacとjavaの違いを理解する

4. javacとjavaの違いを理解する
4. javacとjavaの違いを理解する

javacはソースコードをコンパイルしてバイトコードを生成するコマンドであり、javaはそのバイトコードを実行するコマンドです。この違いを理解することで、エラーの原因を特定しやすくなります。

ソースコードの構造や実行環境に応じて適切なコマンドを選び、効率的な開発を行いましょう。

5. コンパイルで生成されるクラスファイルの中身

5. コンパイルで生成されるクラスファイルの中身
5. コンパイルで生成されるクラスファイルの中身

javacコマンドを実行すると、コンピュータが直接理解できる形式ではなく、Java仮想マシン(JVM)が理解できる「バイトコード」という形式のファイル(.class)が生成されます。

プログラミング未経験の方でも、以下のコマンドを使ってその「正体」を少しだけ覗き見ることができます。


javap -c HelloWorld
Compiled from "HelloWorld.java"
public class HelloWorld {
  public HelloWorld();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #13                 // String Hello, Java!
       5: invokevirtual #15                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return
}

このように、私たちが書いたJavaのコードは、一度JVM専用の命令セットに翻訳されます。この仕組みがあるおかげで、一度コンパイルすればWindowsでもMacでも同じように動作させることができるのです。

6. 実行時エラーが発生した時の対処法

6. 実行時エラーが発生した時の対処法
6. 実行時エラーが発生した時の対処法

コマンドで実行していると、赤い文字で英語のエラーメッセージが表示されることがあります。初心者が最も遭遇しやすいのが、「クラスが見つからない」というエラーです。

例えば、javaコマンドで実行する際に、誤って拡張子(.class)をつけてしまった場合の挙動を確認しましょう。


java HelloWorld.class
エラー: メイン・クラスHelloWorld.classが見つからなかったかロードできませんでした
原因: java.lang.ClassNotFoundException: HelloWorld.class

javaコマンドに渡すのは「ファイル名」ではなく「クラス名」である必要があります。エラーが出たときは、以下のチェックリストを確認してみてください。

  • ファイル名の綴り: 大文字と小文字は正しく区別されているか。
  • 実行場所: .classファイルが存在するディレクトリ(フォルダ)でコマンドを打っているか。
  • 拡張子の有無: javaコマンドの後ろに .class をつけていないか。

エラーメッセージを読み解く力は、プログラミング学習において最も重要なスキルの一つです。

7. パッケージに含まれるクラスの実行方法

7. パッケージに含まれるクラスの実行方法
7. パッケージに含まれるクラスの実行方法

本格的な開発では、クラスを「パッケージ」というフォルダのような仕組みで管理します。この場合、実行方法が少し特殊になります。

例えば、com.exampleパッケージに属するプログラムの場合、ソースコードの先頭に以下のように記述します。


package com.example;

public class MyProgram {
    public static void main(String[] args) {
        System.out.println("パッケージ版の実行成功!");
    }
}

このプログラムを実行するには、パッケージの階層構造を守ったままコンパイルし、「完全限定名(フルクオリティネーム)」で呼び出す必要があります。


javac -d . MyProgram.java
java com.example.MyProgram
パッケージ版の実行成功!

-d . というオプションは「現在のフォルダにパッケージのディレクトリを自動で作ってね」という命令です。最初は難しく感じるかもしれませんが、この「フォルダ構造とクラス名の関係」を理解することが、Javaマスターへの第一歩となります。

まとめ

まとめ
まとめ

Javaのjavacコマンドとjavaコマンドの違いや使い方について理解を深めました。javacはソースコードをコンパイルして.classファイルを生成し、javaはそのクラスファイルを実行します。 また、Java SE 11以降でのソースファイルモードにより、javacコマンドを使用せずに直接ソースコードを実行できる便利な機能も学びました。

以下は、これまで学んだ内容を簡単におさらいするプログラム例です。


public class CommandLineExample {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("引数がありません。プログラムを実行しました!");
        } else {
            System.out.println("受け取った引数:");
            for (String arg : args) {
                System.out.println(arg);
            }
        }
    }
}

上記のプログラムをCommandLineExample.javaとして保存し、次のように実行します。


> java CommandLineExample apple orange banana

出力:


受け取った引数:
apple
orange
banana

このように、Javaの実行環境とコマンドを正しく理解し、プログラムを効果的に実行するスキルを身につけましょう。

先生と生徒の振り返り会話

生徒

javacjavaの違いがよく分かりました!特にソースファイルモードは便利ですね。」

先生

「その通りです。簡単なコードを試したいときや学習時にはとても役立ちますね。ただし、正式なプロジェクトではjavacを使ったコンパイルが一般的です。」

生徒

「実行時に.javaファイルを直接使えることを知って、作業が効率的になりそうです!」

先生

「その意識を持ちながら、引数の扱いやエラー処理にも気を配ると良いプログラマーになれますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaのjavacコマンドとは何ですか?どういう意味ですか?

javacコマンドとは、Javaのソースコード(.javaファイル)をバイトコード(.classファイル)にコンパイルするためのコマンドです。Javaプログラムを実行する前に、javacで一度コンパイルする必要があります。

javaコマンドとjavacコマンドの違いは何ですか?初心者でも分かるように知りたいです。

javacコマンドはJavaのソースコードをコンパイルして.classファイルを作成し、javaコマンドはその.classファイルを実行するためのコマンドです。役割が違うので使い分けが必要です。

Javaのプログラムをコマンドラインで実行するにはどうすればいいですか?

まずjavacコマンドで.javaファイルをコンパイルし、その後javaコマンドでクラス名を指定して実行します。例えば「javac Hello.java」「java Hello」のように入力します。
JavaSilver試験対策の一覧へ
新着記事
AWS
【AWS】CLIでクエリ(--query)の使い方を徹底解説【JQとの違いも】
【AWS CLI】--queryオプションの使い方を徹底解説!JMESPathとJQとの違いも初心者向けにわかりやすく解説
Java
Java の継承のメリットとは?コードの再利用をしやすくする
Java の継承のメリットとは?コードの再利用をしやすくする方法を初心者向けに解説
Java
Java の継承を使うべき場面と使わないほうがよい場面
Java の継承を使うべき場面と使わないほうがよい場面を初心者向けに解説!
Java
Java の toString() メソッドをオーバーライドしてオブジェクトの情報を表示
Java の toString() メソッドをオーバーライドしてオブジェクトの情報を表示
人気記事
AWS
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
AWS
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
AWS
インスタンスタイプの料金比較と最適な選び方(最新2026年版)
AWSインスタンスタイプの料金比較と最適な選び方!初心者でもわかる2025年最新ガイド
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク