NetBeans の「構築」と「実行」の違い2008年10月18日 11時16分14秒

普段何気なく使っている、このコマンドに大きな違いがあるのに気が付いた。ただ単に、コンパイルしたい場合は「構築」を、動かしたい場合は、「実行」を使っていた。

NetBeans はプロジェクトのファイルを表示する時に、ファイルがコンパイルされたかどうかを表示する。実行を行なうと、まずコンパイルを行なってから実行してくれる。NetBeans 上だけで使っている分には何の問題もない。

しかし、dist に作られた jar ファイルを実行する時に大きな違いがあった。「構築」だと、この jar ファイルが作り直される。「実行」を行なっても、このファイルは作り直されない。

dist ディレクトリから jar ファイルを取り出して使うときに落とし穴がある。つまり、「実行」を主体で使っている場合は、この dist の中の jar ファイルが最新とは限らない。プロジェクトを「実行」する時に以下の様なメッセージが表示される。


init:
deps-jar:
init:
deps-jar:
compile:
jar:
compile:
run:
構築成功 (合計時間: 3 秒)

jar: と出ているので、てっきり jar ファイルにしてから、実行しているかと思ったら、他に依存しているプロジェクトの jar を作っていたみたいだった。

NetBeans で実行すると正しく動作するのに、java -jar を用いると動作しない奇妙な現象の原因は、これだった。