バナー画像

近年の開発ではEclipseを初めとした統合開発環境(IDE)を利用することが基本になっており、ターミナル(コマンドライン)でのJava実行方法を知らない開発者も多くいます。

本記事では基本に立ち返って、コマンドを利用したJava実行方法について確認していきましょう。

Javaファイルを実行する仕組みについて理解しよう

Javaでプログラミングを行う場合、Javaファイルと呼ばれるコードが記述されたファイルを作成しただけでは実際にシステムとして動かすことは出来ません。

基本的なJavaプログラムを動かす仕組みについて確認しておきましょう。

Javaファイルはコンパイルしてクラスファイルを作成する必要がある

Javaファイルに記述されたプログラミング言語のコードではコンピューターが解釈することが出来ないため、クラスファイルと呼ばれるコンピューターが解釈出来る中間言語に「コンパイル」する必要があります。

「コンパイル」をコマンドから行う方法は下記の通りとなります。

javac Javaファイルに付けた名前

具体的には「Main.java」ファイルをコンパイルしようと思うと下記のコマンドを入力する必要があります。

javac Main.java

実行した結果「Main.class」というコンピューターが理解出来るクラスファイルが作成されます。

Javaのクラスファイルを指定して実行する

Javaプログラムをコンパイルしてクラスファイルまで作成するとあとは実際に実行するだけです。

下記のコマンドでJavaプログラムを実行することが可能です。

java クラスファイルの名称

注意して頂きたいのが、クラスファイルの名称を指定する際には拡張子「.class」を除いた名称で指定するようにしましょう。
実際に「Main.class」を実行する場合は下記のコマンドを実行します。

java Main

サンプルコードで確認しよう

では実際にサンプルコードをコンパイルして実行してみましょう。

まず「Main.java」ファイルを用意します。

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println("ポテパン");
    }
}

次にコンパイルするため、下記のコマンドを実行します。

javac Main.java

下記の画像のように、「Main.class」ファイルが追加されていることが確認出来ます。

最後に下記のコマンドで実行した結果が画像の通りとなり、指定した「ポテパン」の文字が出力されていることを確認出来ます。

java Main

複数ファイルのJavaプログラムを実行するには

プログラムは通常1つのファイルだけで完結することは少なく、複数ファイルに記述されたコードをまとめて実行する必要があります。

同一階層のクラスファイルなら単一ファイルと同様の方法でコンパイル可能

同じフォルダ内に「Main.java」と「Sub.java」というソースファイルがある場合、コンパイルはMain.javaを指定してコンパイルするだけで「Main.class」と「Sub.class」が作成されます。

javac Main.java

Javaのコンパイラーである「javac」がコンパイル対象として指定した「Main.java」から「Sub.java」を参照していることを判別し、自動でコンパイルが行われているため、「Main.java」のソースと全く関係ないファイルの場合には、コンパイルされることはありません。

階層が異なるディレクトリにファイルが保存されている場合

階層が異なるディレクトリに参照したいファイルが保存されている場合、コンパイル時に明示的に指定してあげる必要があります。

javac -cp .:ディレクトリ名/ ファイル名

上記のコマンドを順に説明していきます。

classpathを指定してファイルの参照先を指定する

まずファイルをコンパイルするため「javac」コマンドを利用し、オプションとして「-cp(クラスパス)」を指定しています。

「-cp」は「-classpath」の略称で、別階層の複数ファイルをコンパイルする場合にはJavaのコンパイラに参照先を教えてあげるためのコマンドです。

参照先ディレクトリを複数指定するためには「:」で区切って指定する

まず最初の「.」の意味は、カレントディレクトリ(現在のフォルダ)を意味します。

最後に指定しているファイルが存在するディレクトリでコマンドを実行します。

次に「:」ですが複数のディレクトリを指定するためにはディレクトリ毎に「:」で区切る必要があります。

ポテパンダの一言メモ

参照する必要があるディレクトリを全て指定してコンパイルを行いましょう。

サンプルコードで確認しよう

複数ファイルに分かれたJavaプログラムを実行する方法についてもサンプルコードで確認しておきましょう。

まずは「Main.java」「Sub1.java」「Sub2.java」「Sub3.java」の4つファイルを用意します。

Main.java

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
      Sub1 sub1 = new Sub1();
      Sub2 sub2 = new Sub2();
      System.out.println(sub1.content);
      System.out.println(sub2.content);
    }
}

Sub1.java

public class Sub1 {
  String content = "ポテパンSub1クラス";
}

Sub2.java

public class Sub2 {
  String content = "ポテパンSub2クラス";
}

Sub3.java

public class Sub3 {
  String content = "ポテパンSub3クラス";
}

今回のサンプルコードでは「Document」フォルダの配下に「sample」フォルダを用意し、「Main.java」「Sub1.java」「Sub3.java」ファイルを格納しています。

更に、「sample」フォルダ配下に「sampleSub」フォルダを作成し、「Sub2.java」ファイルが格納されている状態です。

下記の画像でご確認ください。

ではまずコンパイルを下記のコマンドで行います。

コマンドを実行するフォルダは「Document」配下の「sample」フォルダです。

javac -cp .:sampleSub/ Main.java

実行した結果が下記の画像のようになります。

「Main.java」から呼び出されていない「Sub3.java」についてはクラスファイルが作成されていないことがご確認頂けます。

実際に実行してみましょう。

java -cp .:sampleSub/ Main

複数階層のフォルダを参照する必要がある場合には、実行時にも「-cp」オプションでフォルダ指定することに注意してください。

実行結果が下記の画像となります。

さいごに:コマンドからのJava実行方法を学んで基本的な仕組みを理解しよう!

本記事では、Mac環境でのターミナルからJavaを実行する方法についてご紹介してきました。

IDEでの開発が一般的となってきた昨今、Javaを実行する仕組みを理解せずにプログラミングを行っているJavaプログラマーも少なからずいらっしゃいます。

コマンドラインでのJava実行方法を学び、基本知識を身につけることでIDEでの開発を行う際にもより深く理解して作業することが出来ますので、ぜひ今回ご紹介した方法を一度ご自身でも試して理解を深めてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。