Developer

【はじめてのJava】コンソールでのコンパイル【パッケージとモジュール編】
2021.07.31
Lv1

【はじめてのJava】コンソールでのコンパイル【パッケージとモジュール編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


コラム

コラムでは、本編の補足などをしていきます。

本編では、Eclipseを利用してパッケージを作成して、クラスを利用する方法を紹介しました。
Eclipseでは、ソースファイルを作成すると自動的にコンパイルされてクラスファイルが作成されますので、パッケージを利用した場合のコンパイルについては全く触れていませんでした。
この記事では、Eclipseを使用せず、コンソールを利用してコンパイルする方法と、その際の注意点やオプションを紹介していきます。

目次


パッケージの作り方とコンパイル

Eclipseを利用せずにプログラムを作成していく場合、パッケージはOSシステムのディレクトリを利用して作成します。
WindowsのPCであれば、目的のパッケージ構造に合わせてフォルダを作成します。
階層化したパッケージにする場合、Eclipseでは、「java.silver.test」のように、ドット区切りでパッケージ名をつけることで自動的に行われていましたが、
Eclipseを使わずにパッケージを作成していく場合には、実際にフォルダの中にさらにフォルダを作成します。
(例)「javaSample.silver.test」というパッケージ構成にする場合
※今回は、「Cドライブ > ocjp」というフォルダをルート(基準にするフォルダ)にして作成していきます。

上の図のように、パッケージの階層に合わせて、フォルダを作成します。

パッケージが完成したら、そのパッケージに所属させるクラスファイルを作成するためのソースファイル(javaファイル)を作成していきます。
今回は、「Cドライブ > ocjp」フォルダの中に「Sample.java」という名前でファイルを作成し、以下のようなソースを書きます。

package javaSample.silver.test;

class Sample{
	public static void main(String[] args){
		System.out.println("パッケージのサンプルです。");
	}
}


次に、作成したソースファイルをコンパイルしていきますが、ここで注意しなければいけないことが「クラスファイルを配置(生成)する場所」です。
コンソールでコンパイルを行う場合、ソースファイルが配置されたディレクトリに移動して「javac ソースファイル名」のコマンドを使用しました。
このコマンドを使用した場合、「ソースファイルが配置されているディレクトリと同じディレクトリ」にクラスファイルが生成されます。
そのため、Sample.javaが配置された場所(Cドライブ > ocjp)でコンパイルのコマンドを使用すると、その場にクラスファイルが作成されます。


プログラムを実行するコマンドを実行しても下の図のようにエラーになり、実行することはできません。

ですので、ソースファイルを実際に所属させるパッケージと同じ場所(今回は、java > silver > test)に配置して、コンパイルを行います。
コンパイルの際には、実際に配置されたフォルダに移動して、ファイル名のみを指定してコンパイルすることもできますし、基準のディレクトリから「¥」区切りでフォルダを指定してコンパイルすることもできます。

コンパイルの結果、正しい場所にクラスファイルを作成することができると、プログラムを実行することができます。
プログラムを実行する際には、「java クラス名」コマンドを使用しますが、この時のクラス名は「パッケージ名.クラス名」としなければいけないことに注意しましょう。


-dオプション

また、コンパイルを行う際に、「-dオプション」というオプションを使うことができます。
このオプションを使用することで、クラスファイルを生成する場所を指定することができます。
また、クラスがパッケージ化されている際には、コンパイルのタイミングで自動的にパッケージに応じたディレクトリを作成されるようになります。
[構文] javac –d [ クラスファイルの生成場所 ]  [ コンパイル対象のソースファイル名 ]

(例)以下のソースファイルを「C:¥ocjp」フォルダに配置して、-dオプションを利用してコンパイルする。

package javaTest.test;

public class SampleDopt{
	public static void main(String[] args){
		System.out.println("-dオプションのサンプルです。");
	}
}


ここでは、クラスファイルの生成場所として「-d . 」という指定を行っています。
.」という記号は「カレントディレクトリ」という意味を持っています。カレントディレクトリは、現在作業を行っているディレクトリを表し、今回の場合はコマンドプロンプトの左側の「c:¥ocjp」をさしています。


初めてのJavaシリーズの目次はこちら
パッケージとモジュール編の記事一覧はこちら


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら