Javaアプリケーションのコンパイル・実行

フリーのJava開発環境である OpenJDK を使ったプログラムのコンパイルと実行について説明する。

※ 以下の説明は2022年9月現在のものであり、URLやバージョン番号は異なる場合がある。

Java の強みは同じプログラムがさまざまな環境で動作することである。以下ではWindows環境を中心に説明するが、ほぼ同様の手順で Linux などでも動作させられるので興味のある人は試してみるとよい。


OpenJDK のインストール

Java は、標準ですべてのパソコンOSで利用できるようになっているわけではない。多くの場合、Javaの開発・実行環境をインストールする必要がある。 OpenJDK は Javaのフリーでオープンソースな開発・実行環境である。 64ビットWindows や Linux をはじめとするほとんどのメジャーなパソコンOS上のものが用意されている。

※ 32ビットWindows用の OpenJDK はないので、32ビットWindows環境の場合は Oracle の Java SE 8 などをインストールする必要がある。

※ 大学演習室のパソコンには OpenJDK がインストール済みなので、各自でインストールする必要はない。

ダウンロードと展開

OpenJDK は、

OpenJDK

の、

Download の
jdk.java.net/...   (...にはバージョン番号が入る)

から各自の環境に合うものをダウンロードする。64ビットWindows環境の場合は、

Windows / x64

のzipファイルをダウンロードする。


※ 2022年9月現在、上の手順で OpenJDK 18.0.2.1 がダウンロードされる。

しかし少なくとも2020年9月現在では、OpenJDK のバージョンが 15 だと Visual Studio Code 上で正常に動作しない。(そのうちVisual Studio Codeがアップデートされて動作するようになるとは思われる)
2020年9月時点で Visual Studio Code で Java の学習をしていくのであれば、バージョン 14 の OpenJDK を入れて設定すること。

バージョン 14 は、上記ページのウィンドウ左側上部にある

GA Releases

JDK 14

を選び、zipファイルをダウンロードすればよい。OpenJDK のバージョンは 14.0.2 となる。


ダウンロードしたzipファイルを、適当な場所 (例えば C:\java) 以下に展開する。

以下では、OpenJDK 18.0.2.1 を C:\java 以下に展開したとする。(バージョンが違う場合は適宜読み替えてほしい。)
この場合、

C:\java\jdk-18.0.2.1

ディレクトリ以下に OpenJDK 一式が置かれる。

Path の設定

次に環境変数 Path の設定を行なう。
Windows 10の場合、

コントロールパネル
システム
システムの詳細設定

を開く。さらに、下部にある

環境変数

をクリックし、

システム環境変数

Path

を編集する。
OpenJDKをインストールしたディレクトリの bin サブディレクトリを Path の先頭に追加する。今回の例では、

C:\java\jdk-18.0.2.1\bin

を Path 先頭に追加すればよい。

確認

PowerShell または コマンドプロンプトを開き、

java -version

で、Java実行環境が OpenJDK 18 のものになっていることを確認する。また、

javac -version

で、Javaコンパイラが OpenJDK 18 のものになっていることを確認する。

java のバージョンと javac のバージョンが揃っていないと不具合が発生するので、両方のバージョンがそろっていることを確認しておくこと。


Javaソースファイルの作成

例として、例題1のプログラムを使う。

授業用のフォルダ (ディレクトリ) を H:\ap1 とする。 フォルダが異なる場合、以下の説明のフォルダの箇所をすべて置き換えて読むこと。

上記のフォルダに、例題1のソースファイルをクラス名 Rei1 に .java を付けた Rei1.java という名前で

テキストファイルエディタ
(Windowsのメモ帳やサクラエディタ など)
SAKURA Editor

で入力・保存する。

※ Windows の Java では、バージョン 17 以前の場合はソースファイルのエンコーディングとしてシフトJISが標準になっており、バージョン 18 以降は UTF-8 が標準になっている。上の「確認」のところを参考に java および javac のバージョンを確認し、標準のエンコーディングでソースファイルを保存すること。

なお、例題1はpackage指定がない (デフォルトパッケージ使用) ので、ディレクトリ H:\ap1 直下にファイルを置けばよい。
package指定がある場合は、そのピリオド区切りの名前をそれぞれサブディレクトリとして到達する深いディレクトリにファイルを置く必要がある。

ディレクトリ、パッケージ名、ファイル名は各自のものに読み替えること。

javac によるコンパイルと java による実行

  1. PowerShell を起動 (または「コマンドプロンプト」を起動)

  2. コマンドプロンプトの場合、/D オプションをつけた cd コマンドでプロジェクトのドライブ・ディレクトリに移動 (カレントドライブ・カレントディレクトリが異なる場合)

    	C:\Users\fit-user> cd  /D  H:\ap1
    

    【注意】一部のディレクトリ名の中にスペースが入っている場合は全体をダブルクォーテーションで囲んで指定する必要がある。(下記参照)

    	C:\Users\fit-user> cd  /D  "H:\2022\授業 応用プロ1"
    

    PowerShell の場合、単に cd コマンドでプロジェクトのドライブ・ディレクトリに移動できる。(実際には cd は Set-Location コマンドレットの alias (別名) になっている)

    	PS C:\Users\fit-user> cd    H:\ap1
    

    【注意】一部のディレクトリ名の中にスペースが入っている場合は全体をダブルクォーテーションで囲んで指定する必要がある。(下記参照)

    	C:\Users\fit-user> cd    "H:\2022\授業 応用プロ1"
    

    上記のように、cd コマンドで正しく作業ディレクトリが変更できると、プロンプトに表示されるカレントディレクトリが指定したものに変わる。

    コマンドプロンプトの場合

    	H:\ap1> 
    

    Windows PowerShell の場合

    	PS H:\ap1> 
    

    ※ ソースファイルのディレクトリ (上では H:\ap1) は、各自の保存場所に合わせて指定する必要がある。手で打って入力するか、あるいは、エクスプローラで保存場所のフォルダを開いた状態でアドレス部分をコピーして貼り付けてもよい。

  3. コンパイル (※ Java 11 以降は単一クラスの場合などにコンパイル不要になった)

    javacコマンドでソースファイルをコンパイルする。

    	H:\ap1> javac  Rei1.java
    

    ※ ソースファイルの文字コード (エンコーディング) が使用OSの標準と異なる場合は、それを指定する必要がある。以下はソースファイルがシフトJISの場合、UTF-8の場合である。

    	javac  -encoding SJIS  Rei1.java    (シフトJISの場合)
    
    	javac  -encoding UTF-8  Rei1.java    (UTF-8の場合)
    

    Windows の Java では、バージョン 17 以前の場合はシフトJISが標準になっており、バージョン 18 以降は UTF-8 が標準になっている。標準のエンコーディングでソースファイルを作成すればエンコーディング指定は必要ない。

  4. 実行

    クラスファイルを実行

    実行させるのは main メソッドがあるソースファイル Rei1.java をコンパイルしてできたクラスファイル Rei1.class (デフォルトパッケージ) である。
    パッケージ名、クラス名は大文字・小文字を区別するので間違えずに入力しないといけない。

    javaコマンドでクラスファイル Rei1.class を実行する。以下のように .class をつけずに入力する。

    	H:\ap1> java  Rei1
    

    ソースを直接実行

    Java 11 以降は、単一クラスファイルなどの場合 java コマンドにソースファイルを指定して直接実行させることができる。このソース直接実行の場合は上記の javac によるコンパイル作業をしてはいけない。例のプログラムでは下記コマンドで実行できる。

    	H:\ap1> java  Rei1.java
    

Visual Studio Code を使ったソース入力・デバグ・実行

以下の手順により、Javaプログラムの入力・デバグ・実行が Visual Studio Code の中でできるようになる。

各手順の詳細は省略する。各自で設定して使ってみるとデバグの効率が上がるのが実感できるはずである。

以下、ポイントとなるところだけ簡単に示す。


セットアップのオプション

上記は Visual Studio Codeのインストールの際にオプションを設定する画面で、

エクスプローラーのディレクトリコンテキストメニューに[Codeで開く]アクションを追加する

にチェックを入れる。また、

PATHへの追加

のチェックも入ったままにする。その他、好みで

デスクトップ上にアイコンを作成する

をチェックしてもよい。


インストールが終わったら、Visual Studio Codeを起動し、画面左端真ん中くらいの

Extensions

を選択する。

Extensionsをクリック

左上の検索入力部分に

Japanese

と入力すると

Japanese Language Pack

が見つかるので、インストールする。

Japanese Extension Packをインストール

同様に、入力部分に

Java Ext

と入力すると

Java Extension Pack

が見つかるので、インストールする。

Java Extension Packをインストール

再起動すると、メニューが日本語化されており、拡張機能として Java Extension Pack が入った状態になる。

拡張機能を入れた後

次に、ウィンドウ左下の歯車記号のような「管理」

「管理」をクリック

をクリックする。メニューが出たら

設定

を選ぶ。

「設定」を選ぶ

上部の検索入力部分に

java.jdt.ls.java.home

と入れると、Java:Home が見つかるので

java.homeを検索し「settings.jsonで編集」へ

settings.jsonで編集

をクリックする。ここで、

"java.jdt.ls.java.home":

で始まる行の後にダブルコーテーションで囲んで OpenJDK のパスを入力する。OpenJDK を C:\java\jdk-18.0.2.1 にインストールしていた場合、下図のようになる。
異なるバージョンをインストールしている場合は図のバージョンの箇所を置き換えて入れること。
このとき、パスの区切りの円マーク \ は \\ のように2文字で入れることに注意する。ここでは、円マークとバックスラッシュは同じ文字コードを持っており、円マークをキーボードから普通に入れるとバックスラッシュとして入る。

java.homeにOpenJDKのフォルダを設定

以上で、インストール時の設定は終わりとなる。


次に、Visual Studio CodeでのJavaプログラムのデバグ、実行について簡単に説明する。

まず、Visual Studio Code ではソースファイルは UTF-8 エンコーディングで編集・保存すること。もしサクラエディタ等で シフトJIS (サクラエディタの指定では SJIS) で作ったソースがあって、それを Visual Studio Code上で動作させたい場合は、一度 UTF-8 で保存し直すこと。

コンパイルエラー箇所をエディタ上で確認するためには、Javaソースファイルを直接Visual Studio Codeで開いてはいけない。
Visual Studio Code用の作業フォルダを用意し、
エクスプローラでそのフォルダを右クリックして「Codeで開く」を選択するか、または、
Visual Studio Codeを起動して「ファイル」メニューの「フォルダーを開く」によってそのフォルダを開かなければならない。
その状態で、Javaソースファイルを編集すればよい。

エラー箇所とエラー内容は F8 キーで前から順に、Shift-F8 キーで逆順に調べることができる。
実行・デバグは「実行(R)」メニューの「デバッグ無しで実行」(Ctrl-F5 キー) あるいは「デバッグの開始」(F5 キー) で行なうか、あるいは、mainメソッドの上の行に表示される「Run|Debug」の、Run でプログラムの実行が、Debug でデバグができる。

実行・デバグの際に、メッセージ

Build failed, do you want to continue?

が出たときは、

Proceed

を選択して進める。ただし、

などの場合、Visual Studio Codeのキャッシュが悪さをして当該のプログラムが動作しない (別のソースが実行対象となる) ことがある。そのときは、メッセージ

Build failed, do you want to continue?

の後で、

Fix...
Clean workspace cache

を選んで、

Restart and delete

を選択し、キャッシュをクリアした後、実行・デバグをやり直すこと。

なお、デバグ時には前もって停止させたい行の行番号の左側をクリックして赤丸で表されるブレークポイントを設定しておく必要がある。ブレークポイントで停止の後は、ステップ実行・変数の値の確認、継続実行などが可能になる。


統合開発環境 Eclipse を使った開発

Javaによる開発では、コード入力・デバグ・実行だけでなくGUIアプリケーションのデザイン等も可能な統合開発環境が多く利用されている。代表的なものとして

がある。どちらも専門的な多くの機能を持つが、基本的な使い方には共通部分があるので、一方の使い方を覚えればもう一方もある程度は使えるようになる。演習室のパソコンには Eclipse がインストールされている。

Javaの入門・勉強レベルでは統合開発環境を使うまでもないので、授業の前半期間は使用しないが、後半でGUIアプリケーションを作る演習があり、その際に Eclipse を使う。