Javaコンパイル時に気づけたことメモ2
Javaを学習中の私が,参照関係のjavaファイル実行時に気づいた内容を記載しました.
同パッケージの参照関係について
概要
参照関係にあるファイルについて(下記)参照元のファイルをコンパイルした場合,参照先のファイ変更は変更されるかの検証です.
Main.java -> Hoge.java
Javaを実行するまでに使用するコマンド
新規作成したjavaファイルを実行する際にコンパイルと実行で2回コマンドを実行する必要があります(以下2つ).
コンパイルコマンド
javac main/Main.java
実行コマンド
java main.Main
サンプルファイル
Main.javaでHoge.javaを使用しているサンプルコードを用意しました(以下).
実行対象のファイルはMain.javaです.
hoge
└── Hoge.java
main
└── Main.java
package main;
import hoge.Hoge;
class Main {
public static void main (String[] args) {
Hoge hoge = new Hoge();
hoge.print();
}
}
package hoge;
public class Hoge {
public void print() {
System.out.println("Hello World");
}
}
コンパイル(初回)とコンパイル後の構成
javaコマンドを実行し,ファイルをコンパイルします.
javac main/Main.java
hoge
├── Hoge.class
└── Hoge.java
main
├── Main.class
└── Main.java
Main.javaをコンパイルすると参照関係にあるHoge.javaもコンパイルされます.
初回コンパイル後の実行結果
Main.classを下記コマンドで実行してみましょう.
java main.Main
テストパッケージ配下にあるため,classファイル名の前にパッケージ名を付けます.
`Hello World`
Main.javaを修正する
Main.javaの出力をHello WorldからHello Hogeに修正します.
package hoge;
public class Hoge {
public void print() {
System.out.println("Hello Hoge");
}
}
コンパイル(2回目)とコンパイル後の構成
初回と同様のコマンドでコンパイルを実行します.(ファイル削除は行いません)
javac main/Main.java
実行後のファイル構成は,当然ながら初回の実行後と同様になります.
hoge
├── Hoge.class
└── Hoge.java
main
├── Main.class
└── Main.java
初回と同様のコマンドで実行します.
java main.Main
Hello Hoge
結果
どうパッケージ内のファイルにおいて,参照関係にあるファイルは個別にコンパイルをしなくても更新されることがわかりました.