- PR -

javacでEclipseのソースフォルダをコンパイルするには?

投稿者投稿内容
味噌汁まんぼう
会議室デビュー日: 2008/02/27
投稿数: 14
投稿日時: 2008-10-31 10:54
質問させてください。

WindowsXPのEclipse3でJavaプロジェクトを作成し、その中にソースフォルダを作成し、以下のようにソースを作成しました。
======================
src
└ packageA
 ├ MyClassA1.java
 ├ MyClassA2.java
 └ packageB
  ├ MyClassB1.java
  ├ MyClassB2.java
  └ packageC
   ├ MyClassC1.java
   └ MyClassC2.java
======================
なお、各クラスには継承関係はないものとします。
これらをコマンドプロンプト上のjavacでコンパイルしようとする場合は、以下のようにコンパイルしなくてはならいなのでしょうか?
======================
javac src¥packageA¥*.java
javac src¥packageA¥packageB¥*.java
javac src¥packageA¥packageB¥packageC¥*.java
======================
(↑¥は全角で記入しておりますが、実際は半角を使用しております)
もしも1回のjavacコマンドの実行で全てのソースをコンパイルする方法がございましたら、ご教授いただけると幸いです。
やんち
常連さん
会議室デビュー日: 2008/10/24
投稿数: 32
投稿日時: 2008-10-31 13:14
コマンドプロンプトから複数のJavaソースをコンパイルするなら、
Javacを直接呼ぶよりも、ビルドツールantを使うのがお勧めですよ。
味噌汁まんぼう
会議室デビュー日: 2008/02/27
投稿数: 14
投稿日時: 2008-10-31 13:45
やんちさん、ご回答ありがとうございます。
たしかに、antを使用すれば上記のことはできますね。
ただ今回はjavacで実現できないかどうか知りたかったので、質問させていただきました。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-10-31 14:55
公式のドキュメントをまず読みましょう。
コマンド行引数ファイルという機能についての説明が書いてありますよ。

味噌汁まんぼう
会議室デビュー日: 2008/02/27
投稿数: 14
投稿日時: 2008-10-31 15:24
nagiseさん、ご回答ありがとうございます。
公式ドキュメント、拝見いたしました。
確かに、コマンド行引数ファイルを使用すれば、1回のjavacコマンドで済みますね。

ただ、この方法だとソースフォルダ内のソースファイルの位置を把握して、
事前にコマンド行引数ファイルを作成しておく必要がありますね。
できれば、「ソースフォルダ以下のソースファイルを全部コンパイル」というのをjavacコマンドで一発できる方法がないか探しております。
未記入
大ベテラン
会議室デビュー日: 2008/02/07
投稿数: 115
投稿日時: 2008-10-31 15:40
すべてのソースをコンパイルしてくれる機能ではないですが、javac コマンド自体に、依存クラスをコンパイルしてくれる機能があるので、主要なクラスだけ引数に指定してコンパイルすればいいじゃないでしょうか。

たとえば、javac の引数で packageA\Hoge.java をコンパイルするように指定すれば、Hoge クラスが packageB のクラスに依存していれば、自動的に packageB の依存クラスもコンパイルしてくれます。

あくまでも依存しているクラスをコンパイルしてくれるだけなので、すべてのソースがコンパイルされるということではありませんけどね。たとえば、それぞれのパッケージに依存関係がないとか、リフレクションを使っていて依存関係が分からないとか。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-10-31 15:44
引用:

味噌汁まんぼうさんの書き込み (2008-10-31 15:24) より:
できれば、「ソースフォルダ以下のソースファイルを全部コンパイル」というのをjavacコマンドで一発できる方法がないか探しております。



あぁ、そういうことですね。それならjavac *で出来ませんか?
今見てみたら公式ドキュメントにはsourcefilesにワイルドカード使えるって明記されていないな…。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-10-31 15:53
引用:

nagiseさんの書き込み (2008-10-31 15:44) より:

あぁ、そういうことですね。それならjavac *で出来ませんか?
今見てみたら公式ドキュメントにはsourcefilesにワイルドカード使えるって明記されていないな…。



使い方の例には載ってますね。
ワイルドカードの扱いって、シェルに依存するのではないですか? だから明記できないのかなと。

スレ主さんは、例えば -r を指定したらフォルダを再帰的に辿ってコンパイルしてくれるようなオプションがないかなーと考えているんですよね?
で、おそらくそのような方法は存在しないんですよね。なので皆さん代替案を提案されていると。
# 確実に「ない」と言える人って限られてるだろうしなぁ

スキルアップ/キャリアアップ(JOB@IT)