毎日の練習問題に取り組みましょう。
問題
次のモジュール型Javaプロジェクトをコンパイルし、実行しようとしました。この構成において、正しいコンパイルおよび実行コマンドはどれでしょうか?
// module-info.java
module mymodule {
exports com.example;
}
// Main.java
package com.example;
public class Main {
public static void main(String[] args) {
System.out.println("Hello from my module!");
}
}
選択肢
- A. javac -d out module-info.java com/example/Main.java
- B. javac -d out -modulesourcepath . module-info.java com/example/Main.java
- C. java –module mod –module-mypackage com/example/Main
- D. java -p out -m mymodule/com.example.Main
答えと解説
回答を見る
答え
B. javac -d out -modulesourcepath . module-info.java com/example/Main.java
解説
基本説明:
Javaでモジュールシステムを扱う際、module-info.java
ファイルは非常に重要です。このファイルはモジュールの名前や公開しているパッケージを定義する役目を果たします。
モジュール型アプローチを使用する際、ソースコードのコンパイルはモジュールソースパスを指定する必要があります。これにより、Javaコンパイラは適切なパッケージとモジュールの構造を認識できます。
誤答理由:
Aは正しいコンパイルコマンドに近いですが、モジュールを認識するために-modulesourcepath
の指定が不足しています。
Cは実行コマンドですが、パラメータが間違っており、モジュール名の指定が必要です。
つまずきポイント:
Javaモジュールのコンパイルは、従来のクラスベースのプロジェクトよりも複雑です。特に、モジュールソースパスやモジュールパスの指定に慣れていないと、どのコマンドでモジュールをコンパイルないし実行すべきかがわからなくなることがあります。
発展知識:
モジュールシステムは、Java 9で導入され、巨大プロジェクトの整合性やスコープを管理する上で役立つ強力なツールです。
開発中のモジュールが他のモジュールとどのように連携するかを考慮に入れることで、ソフトウェアの構造がより安定し、メンテナンス性が向上します。