質問: javaプログラムのpackage追加時のコンパイルと実行について ### 発生している問題 javaプログラムでpackageを加えた際に実行ができない問題が発生したため調べたところ、コンパイル時に 【javac -d . クラス名.java】 でコンパイルするとpackage名のフォルダが生成されることがわかりました。packageのないコードの頃は、 javac クラス名.java でクラス名のファイルを生成して実行していました。 今回、コンパイルも実行もでき、問題は解決したのですが、この【-d . 】がなんなのかがわからずスッキリしません。 【-d .】 はフォルダを生成するコマンドなのでしょうか。調べてもわからなかったのでどなたか解説していただけないでしょうか。 ### 該当のソースコード package helloworld; public class Hello{ public static void main(String[] args){ System.out.println("hello"); } } ~コマンドプロンプトにて~ javac -d . Hello.java java helloworld.Hello ### 補足情報(言語/FW/ツール等のバージョンなど) javac -version javac 1.8.0_144
回答: Java Platform, Standard Editionツール・リファレンスからの引用です。 -d directory クラス・ファイルの出力先ディレクトリを設定します。そのディレクトリはjavacによって作成されないため、すでに存在している必要があります。クラスがパッケージに含まれる場合、javacは、パッケージ名を反映したサブディレクトリにクラス・ファイルを置き、必要に応じてディレクトリを作成します。 "-d ." は出力先をカレントディレクトリにしている。