0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

java コンパイル仕様について気づいたこと2(別パッケージの参照関係)

Posted at

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
Main.java
package main;

import hoge.Hoge;

class Main {
    public static void main (String[] args) {
        Hoge hoge = new Hoge();
        hoge.print();
    }
}
Hoge.java
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に修正します.

Hoge.java
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

結果

どうパッケージ内のファイルにおいて,参照関係にあるファイルは個別にコンパイルをしなくても更新されることがわかりました.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?