【Java SE17 Silver 模擬試験】A-34

Java SE17 Silver 模擬試験
Java SE17 Silver 模擬試験

問題

同じディレクトリに配置された次の2つのソースファイルを次のコンパイルします。
コンパイルされたクラスを実行するコマンドはどれですか。

User.java

package app.entity;

public class User {
	private String name;
	private int pin;

	public String getName() {
		return name;
	}

	public User(String name, int pin) {
		this.name = name;
		this.pin = pin;
	}
}

Main.java

package app.main;
import app.entity.User;

public class UserTest {
	public static void main(String... args) {
		User user = new User("Duke", 123);
		System.out.println(user.getName());
	}
}

コンパイル

$ javac -d build $(find . -name)

選択肢

A)java – cp build/app/main UserTest

B)java – cp build/app/entity build/app/main UserTest

C)java -cp build app.main. UserTest

D)java -p build/app/main:build/app/entity app.main.UserTest

E)java app.main.UserTest

F)java -p build -m app.main.UserTest

解答

A)java – cp build/app/main UserTest

B)java – cp build/app/entity build/app/main UserTest

C)java -cp build app.main. UserTest

D)java -p build/app/main:build/app/entity app.main.UserTest

E)java app.main.UserTest

F)java -p build -m app.main.UserTest

解説

コンパイル後に実行するための正しいコマンドは E)java app.main.UserTest です。

理由

  1. コンパイル後の構成:
    • User.javaMain.java をコンパイルした後、build ディレクトリ内には次のような構造ができます:arduinoコードをコピーするbuild/ └── app/ ├── entity/ │ └── User.class └── main/ └── UserTest.class
  2. 実行するためのクラスパス:
    • java コマンドで UserTest を実行するためには、そのクラスが存在するパッケージ名を指定する必要があります。
    • クラス UserTestapp.main パッケージにあるため、完全修飾名である app.main.UserTest を指定します。
  3. コマンド:
    • E)java app.main.UserTest は正しい実行コマンドであり、クラスパスが build ディレクトリに設定されているため、正しく実行されます。

まとめ

したがって、正しいコマンドは E)java app.main.UserTest です。他の選択肢は、クラスパスの指定や形式が正しくないため、実行に失敗します。

前の問題へ SE17_A-33

次の問題へ SE17_A-35


対象資格:Java SE17 認定資格