調べてもなかなか出てこなかったのでメモ。
実行コマンド
$ javac -d /path/to/build/dir/ /path/to/javafiles
$ java -cp /path/to/classfiles/ main.Main
例
こんな階層だったとします。
.
└── src
├── app
│ └── App.java
└── hoge
├── Hoge.java
└── fuga
└── Fuga.java
コンパイル
全部コンパイルします。-d で生成ファイルの出力先のディレクトリを指定します。
$ javac -d build src/*/*.java src/*/*/*.java
こうなります。
.
├── build
│ ├── app
│ │ └── App.class
│ └── hoge
│ ├── Hoge.class
│ └── fuga
│ └── Fuga.class
└── src
├── app
│ └── App.java
└── hoge
├── Hoge.java
└── fuga
└── Fuga.java
build ディレクトリにclassファイルがちゃんとパッケージ分けされて入っています。
実行
$ java -cp build app.App
-cpでクラスパスを指定します。クラスパスは、classファイルを探すルートとなるディレクトリです。buildの中にあるのでそれを指定します。
app.App の部分は、mainメソッドが入っているクラスをパッケージ名込み且つ、ドット区切りで指定します。
以上です。