Javaコラム Javaエンジニアのためのお役立ちコラム

Javaをゼロから始めて実行するまでを理解しよう!実行時のエラー例も紹介

 
Javaをゼロから始めて実行するまでを理解しよう!実行時のエラー例も紹介
SE
Javaを実行するまでの一連の流れを教えてください。
PM
ゼロの状態から順に説明していきますので、一緒に見ていきましょう。

【初心者向け】Javaをゼロから始めて実行するまでを理解しよう


Javaでプログラム開発する際には、「Eclipse」等の「統合開発環境(※この後に詳しく説明します)」を利用するのが一般的です。

「統合開発環境(IDE)」は、様々な機能を意識せずに利用できるため大変便利です。しかし、プログラム実行時に「どのような処理がコンピュータ側で行われているか」を理解しづらくなるという側面もあります。

こちらの記事では、「ゼロから始めてJavaのプログラムを実行するまで」の全体の流れを追いながら、どのような処理がコンピュータで行われているかを説明していきます。

主に、プログラミング初心者向けに説明していきますが、ある程度のプログラミング歴があるけれどコンピュータ側での処理は良く分からないといったプログラマーの方にも参考になると思います。

Javaを実行するための「統合開発環境(IDE)」とは?

「統合開発環境」とは、「プログラム開発支援ツール」のことです。一般的に「IDE(Integrated Development Environment)」という略称で呼ばれています。

IDEには、プログラム開発に必要な機能(コンパイラ、エディタ、デバック等)が開発手順に合わせて一通りセットで用意されています。

代表的なIDEとしては、「Eclipse」、「Visual Studio」や「Xcode」等があり、様々な企業や団体から提供されています。

こちらの記事ではIDEの利用方法等の説明は省略しますが、プログラミング開発時には必須のツールといえるでしょう。

Javaプログラム実行までの全体の流れ

最初に、Javaプログラム実行までの全体の流れを抑えておきましょう。

(1)「JDK」をインストールする
(2)ソースコードを書いて「ソースファイル」を作成する
(3)ソースファイルを「コンパイル」して「クラスファイル」を作成する
(4)クラスファイルをコマンドで実行する

それでは、それぞれの手順について詳しく説明してきます。

Javaの実行環境「JDK」をインストールする


Javaプログラムを実行するための環境である「JDK(Java Development Kit)」をダウンロードします。

Javaを実行するだけであれば、「JRE(Java Runtime Environment)」という実行環境でも問題ありません。

しかし、JREにはJavaを「コンパイル(※後ほど詳細に説明します)」するためのコマンドが含まれていません。そのため、JDKの方をインストールすることにします。

Windowsの場合

以下の参考サイトからJDKをダウンロードします。
https://www.oracle.com/java/technologies/javase-downloads.html

ページの中央部辺りの「JDK Download」をクリックすると、各マシンのJDKをダウンロードするページへ移動します。

Windows 10の場合は、「Windows x64 Installer」欄の「jdk-15_windows-x64_bin.exe」ファイル等をクリックしてダウンロードします。

このファイルをクリックして起動し、インストールを実行します。後は画面の指示に従ってインストールを完了させます。

Macの場合

Macの場合も同様に、以下の参考サイトからJDKをダウンロードします。

https://www.oracle.com/java/technologies/javase-downloads.html

JDKをダウンロードするページへ移動した後に、「macOS Installer」欄の「jdk-15_osx-x64_bin.dmg」ファイルをダウンロードし、同様にインストールを完了させます。

Java実行に必要な「クラスパス(classpath)」とは?


「クラスパス(classpath)」とは、Javaプログラムを動かすために必要なファイルの場所です。

ファイルの例としては、「Javaアプリケーション起動コマンド(java.exe)」や「Javaコンパイルコマンド(javac.exe)」等があり、これらはJDKに含まれてます。

しかし、JDKをインストールしただけでは、Javaプログラムを実行できません。コンピュータは、JDKがインストールされている「場所」を知らないからです。

そのため「クラスパス」をコンピュータに対して教えてあげる必要があります。具体的には、JDKが配置されている場所を「環境変数(Windowsの場合)」に設定します。

ちなみに、この「クラスパス」を設定することを「パスを通す」という表現がよく用いられます。

「クラスパス」の具体例

具体的なクラスパスの例は、以下の通りです。

例)クラスパス(Windowsの場合)
C:\Program Files\Java\jdk-15\bin

次に、この設定方法を確認していきましょう。

「クラスパス(classpath)」の設定(Windowsの場合)

具体的には、以下の手順になります。

(1)画面左下に設置されている「検索ボックス」に、「システム環境変数の編集」と入力する
(2)検索候補をクリックして、「システムのプロパティ」の小ウィンドウを開く
(3)一番下の「環境変数」ボタンをクリックして、「環境変数」の小ウィンドウを開く
(4)下側の「システム環境変数」のリストから「Path」を選択し、「編集」ボタンをクリックする
(5)他のパス情報を消さないように注意しながら、クラスパス情報と「;(セミコロン)」を合わせたものを「先頭に」追加する

例)「Path」に追加するクラスパス情報
C:\Program Files\Java\jdk-15\bin;
※このフォルダの下に「java.exe」等のコマンドファイルが配置されています

「クラスパス(classpath)」の設定上の注意点(その1)

この「Path」は、「;(セミコロン)」で区切られており、先頭にある情報から順に優先して参照されるのがポイントです。

プログラム開発の実務では、バージョンが異なる複数のJDKをインストールし、これらを切り替えながら開発することがあります。その際には、この順番を修正することで有効なJDKのバージョンを変更することが可能です。

「クラスパス(classpath)」の設定上の注意点(その2)

「ユーザ環境変数」側に「Path」を設定することでも可能です。その場合は、そのログインユーザのみでこの設定が有効になります。

「ユーザ環境変数」に設定を追加した場合でも、「システム環境変数」の方が優先される点に注意が必要です。

例えば、以下の場合には「C:\Program Files\Java\jdk-15\bin;」が優先されます。

例)「Path」設定の優先順位
「ユーザ環境変数」のPath設定:C:\Program Files\Java\jdk-14\bin;
「システム環境変数」のPath設定:C:\Program Files\Java\jdk-15\bin; ※こちらが優先される

「クラスパス(classpath)」の設定(Macの場合)

Macの場合も、ほぼ同様の手順になります。

Windowsの環境変数に相当する「/.bash_profile」ファイルが、ホームディレクトリの下にあります。このファイルの最後尾にクラスパスを追加します。なおファイルがない場合は、新規に作成しましょう。

例えば、「/Library/Java/jdk15/bin」をクラスパスに設定する場合は、以下の情報を追加します。

例)クラスパス(Macの場合)
export PATH=$PATH:/Library/Java/jdk15/bin

Windowsと異なり、「:(コロン)」区切りとなっています。また「$PATH」を先頭に追加している理由は、既存のパスを残してそれに追加するためです。

インストール後の確認方法

インストールとクラスパスの設定まで完了しました。それでは、コンピュータがJava起動コマンドの場所を正しく理解しているか、いわゆる「パス(PATH)が通っているか」を確認してみましょう。

具体的には、「コマンドプロンプト(※Windowsの場合)」や「ターミナル(※Macの場合)」を開いて、以下のコマンドを入力します。

$ java -version

その結果、以下のようにバージョン情報が表示されたら、Javaの実行環境の設定は成功です。

java version “”15″” 2020-09-15
Java(TM) SE Runtime Environment (build 15+36-1562)
Java HotSpot(TM) 64-Bit Server VM (build 15+36-1562, mixed mode, sharing)

Java実行用のソースコードを書いて「ソースファイル」を作成する


Javaの実行環境が整いました。次に、Javaでソースコードを書いてみましょう。

「メモ帳」等のテキストエディターを利用して、以下のように記載します。

public class HelloWorld {
public static void main(String[] args){
System.out.println(“”Hello World!!””);
}
}

記載したソースファイルの名称は、「HelloWorld.java」として保存します。ファイルの拡張子は「.java」にする必要があります。

Javaソースファイルを「コンパイル」して「クラスファイル」を作成する


Javaでは作成したソースファイルをそのまま実行しません。

「コンパイル」という中間作業を実施して「クラスファイル」を作成し、そのファイルを実行するという形式を取ります。

以下に、詳しく説明していきます。

「コンパイル」とは?

「コンパイル」とは、コンピュータ(※ここではJavaの実行環境)が理解できる言葉にソースファイルを「翻訳」することです。

PHP等のように、コンピュータがソースファイルを「翻訳」しながら実行する場合に比べて、予め翻訳しておくことで実行速度が速くなるという利点があります。

「コンパイラ」とは?

「コンパイラ」とは、コンパイルを実行するプログラムのことです。

「コンパイル」と似ていますが、こちらは処理名で、「コンパイラ」は処理を行う実体という違いがあります。

「クラスファイル」とは?

ソースファイルをコンパイル(翻訳)することで作成されるファイルが「クラスファイル」です。拡張子は、「.class」となります。

クラスファイルは、Javaプログラムにおける実行ファイルに相当します。

プログラム開発を進めると、このクラスファイルの数が膨大になりがちです。そこで、複数のクラスファイルを集めて「JAR(じゃー)」という圧縮ファイルにするのが一般的です。

こういったプログラム実行に必要なクラスファイルは、すべて「パスを通す」必要があります。

コンパイルの実施方法(Windowsの場合)

ソースファイルをコンパイルするには、「javac」というコマンドを使います。「javac ソースファイル名」という形式になります。

「コマンドプロンプト」を開いて、以下のように入力してコンパイルを実施します。

$ javac HelloWorld.java

こちらの例では、「HelloWorld.class」というクラスファイルが作成されます。

エラー等が表示されなければ、コンパイル成功です。

コンパイルの実施方法(Macの場合)

同様に「ターミナル」を開いて、以下のように入力してコンパイルを実施します。

$ javac HelloWorld.java

実行結果等も同様になります。

コンパイル時のエラーの対処方法

コンパイル時にエラーが発生する場合があります。ほとんどのケースでは、記載漏れや文法間違い等といった単純な書き間違いによるものです。

エラーが発生した場合の対処方法は、ソースコードを改めて詳細に見直すことと、表示されているエラー名でキーワード検索して解決策をリサーチすると良いでしょう。

Javaのクラスファイルをコマンドで実行する


ここまでで、Javaのプログラムを実行する為の準備がしてきました。

ここからは、実際にJavaのクラスファイルをコマンドを打って実行してみましょう。

Javaの実行方法

Javaの実行方法は、「java+クラスファイル名から”.class”を削除した名前」という形式になります。

コマンドプロンプトを開き、以下のように入力して実行します。

$ java HelloWorld
Hello World!!

上記のように表示されたらプログラム実行に成功です。

Javaプログラム実行時のエラー例

Java実行時には様々なエラーが発生します。その中でも、特に分かりにくいエラーの例を紹介します。

以下のようなエラーが発生したケースです。

$ java HelloWorld
Error: A JNI error has occurred, please check your installation and try again
Exception in thread “”main”” java.lang.UnsupportedClassVersionError: HelloWorld has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
(以下略)

この原因は、JDKとJREの両方がインストールされているケースが考えられます。

具体的には、コンパイルしたJDKのバージョンよりも、Javaを実行したJREのバージョンが古い時に発生するエラーです。

以下の例で確認してみましょう。

コマンドプロンプト等で、以下のコマンドを入力して各バージョンを確認してみます。

java -version (JREのバージョン)
java version “”1.8.0_261″”

javac -version(JDKのバージョン)
java version “”15″” 2020-09-15

ここでコンパイルしたJDKの「バージョン15」よりも、実行したJREの「バージョン8」と古くなっています。

この場合は、JREをアンインストールしてしまうか、環境変数でJDKのパスが一番先頭に来るよう修正します。

SE
Javaプログラム実行までの一連流れがよく理解できました。
PM
java実行までの流れが理解できたら、さらに理解を深めるために実際にソースファイルを作成してみましょう。

実務としてのJavaのプログラム開発


Javaの実行環境が用意されていない「ゼロ」の状態から、ソースファイルを作成し、コンパイル、実行までを駆け足で説明してきました。

プログラム開発の実務では、「Eclipse」等の「統合開発環(IDE)」を利用する開発現場が多いです。

しかし、エラーが発生したり想定通りにプログラムが動かなかったりする場合があります。

その際には、こちらの記事で説明したプログラムが動くまでの「全体の流れ」を思い出して、対策に役立ててみましょう。


Javaでのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

recommended

Categories

Tags