名 前
javac − Java コ ン パ イ ラ
形 式
javac [
−bootclasspath bootclasspath ]
[ −classpath classpath ] [
−d directory ]
[ −deprecation ] [ −encoding
encoding ]
[ −extdirs directories ]
[ −g | −g:none |
−g:keyword-list ] [
−Joption ]
[ −nowarn ] [ −O ] [
−sourcepath sourcepath ]
[ −target version ] [
−verbose ] [ −X ]
[ −Xstdout filename ] [
sourcefiles ] [ @files ]
パ ラ メ ー タ
オ プ シ ョ ン の 順 序 は 任 意 で す 。 特 定 の オ プ シ ョ ン に 適 用 さ れ る パ ラ メ ー タ に つ い て は 、 「 オ プ シ ョ ン 」 節 を 参 照 し て く だ さ い 。
sourcefiles |
コ ン パ イ ル さ れ る 1 つ 以 上 の ソ ー ス フ ァ イ ル (MyClass.java な ど ) | ||
@files |
ソ ー ス フ ァ イ ル を 一 覧 表 示 す る 1 つ 以 上 の フ ァ イ ル |
機 能 説 明
javac ツ ー ル は 、 Java プ ロ グ ラ ミ ン グ 言 語 で 記 述 さ れ た ク ラ ス と イ ン タ フ ェ ー ス の 定 義 を 読 み 取 り 、 バ イ ト コ ー ド ク ラ ス フ ァ イ ル に コ ン パ イ ル し ま す 。
ソ ー ス コ ー ド の フ ァ イ ル 名 を javac に 渡 す に は 、 次 の 2 つ の 方 法 が あ り ま す 。
• |
ソ ー ス フ ァ イ ル の 数 が 少 な い 場 合 は 、 フ ァ イ ル 名 を コ マ ン ド 行 で 直 接 指 定 し ま す 。 | ||
• |
ソ ー ス フ ァ イ ル の 数 が 多 い 場 合 は 、 フ ァ イ ル 名 を 空 白 ま た は 行 ブ レ ー ク で 区 切 っ て フ ァ イ ル に 記 述 し ま す 。 次 に 、 こ の リ ス ト フ ァ イ ル 名 の 先 頭 に @ を 付 け て javac の コ マ ン ド 行 で 指 定 し ま す 。 |
ソ ー ス コ ー ド の フ ァ イ ル 名 は .java 拡 張 子 、 ク ラ ス の フ ァ イ ル 名 は .class 拡 張 子 を 持 た な け れ ば な り ま せ ん 。 ま た 、 ソ ー ス フ ァ イ ル と ク ラ ス フ ァ イ ル の ど ち ら も 、 該 当 す る ク ラ ス に 対 応 し た ル ー ト 名 を 持 た な け れ ば な り ま せ ん 。 た と え ば 、 MyClass と い う 名 前 の ク ラ ス は 、 MyClass.java と い う 名 前 の ソ ー ス フ ァ イ ル に 記 述 し ま す 。 こ の ソ ー ス フ ァ イ ル は 、 MyClass.class と い う 名 前 の バ イ ト コ ー ド ク ラ ス フ ァ イ ル に コ ン パ イ ル さ れ ま す 。
内 部 ク ラ ス 定 義 は 、 追 加 の ク ラ ス フ ァ イ ル を 生 成 し ま す 。 こ れ ら の ク ラ ス フ ァ イ ル の 名 前 は 、 MyClass$MyInnerClass.class の よ う に 、 内 部 ク ラ ス 名 と 外 部 ク ラ ス 名 を 組 み 合 わ せ た も の に な り ま す 。
ソ ー ス フ ァ イ ル は 、 パ ッ ケ ー ジ ツ リ ー を 反 映 し た デ ィ レ ク ト リ ツ リ ー に 配 置 す る 必 要 が あ り ま す 。 た と え ば 、 す べ て の ソ ー ス フ ァ イ ル を /workspace に 置 い て い る 場 合 、 com.mysoft.mypack.MyClass の ソ ー ス コ ー ド は /workspace/com/mysoft/mypack/MyClass.java に あ る 必 要 が あ り ま す 。
デ フ ォ ル ト で は 、 コ ン パ イ ラ は 各 ク ラ ス フ ァ イ ル を 対 応 す る ソ ー ス フ ァ イ ル と 同 じ デ ィ レ ク ト リ に 置 き ま す 。 -d (後 述 の 「 オ プ シ ョ ン 」 を 参 照 ) を 使 う と 、 ソ ー ス フ ァ イ ル の あ る 場 所 と は 異 な る 出 力 先 デ ィ レ ク ト リ を 指 定 で き ま す 。
型
の 検 索
ソ ー ス フ ァ イ
ル を コ ン パ イ
ル す る と き 、
コ ン パ イ ラ に
は 、 ま だ 認 識
し て い な い 型
に 関 す る 情 報
が 必 要 に な る
こ と が あ り ま
す 。 コ ン パ イ
ラ に は 、 ソ ー
ス フ ァ イ ル で
使 わ れ て い る
ク ラ ス ま た は
イ ン タ フ ェ ー
ス 、 拡 張 さ れ
て い る ク ラ ス
ま た は イ ン タ
フ ェ ー ス 、 あ
る い は 実 装 さ
れ て い る ク ラ
ス ま た は イ ン
タ フ ェ ー ス そ
れ ぞ れ の 型 情
報 が 必 要 で す
。 こ れ に は 、
ソ ー ス フ ァ イ
ル で 明 示 的 に
は 言 及 さ れ て
い な く て も 、
継 承 を 通 じ て
情 報 を 提 供 す
る ク ラ ス と イ
ン タ フ ェ ー ス
も 含 ま れ ま す
。
た と え ば 、 java.applet.Applet を サ ブ ク ラ ス 化 す る 場 合 は 、 Applet の 上 位 ク ラ ス で あ る java.awt.Panel、 java.awt.Container、 java.awt.Component 、 お よ び java.awt.Object も 使 っ て い る こ と に な り ま す 。
コ ン パ イ ラ は 、 型 情 報 が 必 要 に な る と 、 該 当 す る 型 を 定 義 し て い る ソ ー ス フ ァ イ ル ま た は ク ラ ス フ ァ イ ル を 探 し ま す 。 コ ン パ イ ラ は 、 ま ず 、 ブ ー ト ス ト ラ ッ プ ク ラ ス と 拡 張 機 能 ク ラ ス を 検 索 し 、 次 に ユ ー ザ ク ラ ス パ ス を 検 索 し ま す 。 ユ ー ザ ク ラ ス パ ス は 、 CLASSPATH 環 境 変 数 を 設 定 す る か 、 あ る い は -classpath コ マ ン ド 行 オ プ シ ョ ン を 使 っ て 設 定 し ま す (詳 細 は 、 「 ク ラ ス パ ス の 設 定 」 を 参 照 )。 -sourcepath オ プ シ ョ ン が 指 定 さ れ て い る 場 合 、 コ ン パ イ ラ は 、 指 定 さ れ た パ ス で ソ ー ス フ ァ イ ル を 検 索 し ま す 。 そ れ 以 外 の 場 合 は 、 ユ ー ザ ク ラ ス パ ス で ク ラ ス フ ァ イ ル と ソ ー ス フ ァ イ ル の 両 方 を 検 索 し ま す 。 -bootclasspath オ プ シ ョ ン と -extdirs オ プ シ ョ ン を 使 う と 、 別 の ブ ー ト ス ト ラ ッ プ ク ラ ス や 拡 張 機 能 ク ラ ス を 指 定 で き ま す 。 後 述 の 「 ク ロ ス コ ン パ イ ル オ プ シ ョ ン 」 を 参 照 し て く だ さ い 。
型 の 検 索 に 成 功 し た と き に 得 ら れ る 結 果 は 、 ク ラ ス フ ァ イ ル 、 ソ ー ス フ ァ イ ル 、 ま た は そ の 両 方 で あ る 場 合 が あ り ま す 。 そ れ ぞ れ の 場 合 に javac が ど の よ う に 処 理 を 行 う か を 次 に 示 し ま す 。
• |
検 索 で 見 つ か っ た も の が ソ ー ス フ ァ イ ル で は な く 、 ク ラ ス フ ァ イ ル で あ る 場 合 、 javac は ク ラ ス フ ァ イ ル を 使 用 し ま す 。 | ||
• |
検 索 で 見 つ か っ た も の が ク ラ ス フ ァ イ ル で は な く 、 ソ ー ス フ ァ イ ル で あ る 場 合 、 javac は 、 該 当 す る ソ ー ス フ ァ イ ル を コ ン パ イ ル し 、 そ の 結 果 作 成 さ れ る ク ラ ス フ ァ イ ル を 使 用 し ま す 。 | ||
• |
検 索 で 見 つ か っ た も の が ソ ー ス フ ァ イ ル と ク ラ ス フ ァ イ ル の 両 方 で あ る 場 合 、 javac は 、 ク ラ ス フ ァ イ ル が 古 く な っ て い る か ど う か を 調 べ ま す 。 ク ラ ス フ ァ イ ル が 古 く な っ て い る 場 合 は 、 ソ ー ス フ ァ イ ル を 再 コ ン パ イ ル し 、 更 新 後 の ク ラ ス フ ァ イ ル を 使 用 し ま す 。 そ れ 以 外 の 場 合 は 、 見 つ か っ た ク ラ ス フ ァ イ ル を 使 用 し ま す 。 |
デ フ ォ ル ト で は 、 ク ラ ス フ ァ イ ル が ソ ー ス フ ァ イ ル よ り 古 い 場 合 に の み 、 javac は ク ラ ス フ ァ イ ル が 古 く な っ て い る と 判 断 し ま す 。
javac は 、 コ マ ン ド 行 に 指 定 さ れ て い な い ソ ー ス フ ァ イ ル を コ ン パ イ ル す る と き で も 、 そ の こ と を 示 す メ ッ セ ー ジ を 表 示 し ま せ ん 。 自 動 コ ン パ イ ル を ト レ ー ス す る に は 、 -verbose オ プ シ ョ ン を 使 っ て く だ さ い 。
オ プ シ ョ ン
コ ン パ イ ラ に は 、 現 在 の 開 発 環 境 で サ ポ ー ト さ れ 、 将 来 の リ リ ー ス で も サ ポ ー ト さ れ る 標 準 オ プ シ ョ ン の セ ッ ト が あ り ま す 。 非 標 準 オ プ シ ョ ン の 補 足 的 な セ ッ ト は 、 現 在 の Virtual Machine の 実 装 特 有 の も の で 、 将 来 変 更 さ れ る 可 能 性 が あ り ま す 。 非 標 準 オ プ シ ョ ン は 、 −X で 始 ま り ま す 。
標
準 オ プ シ ョ ン
-classpath classpath
ユ ー ザ ク ラ ス パ ス を 設 定 し 、 CLASSPATH 環 境 変 数 の ユ ー ザ ク ラ ス パ ス を 上 書 き し ま す 。 CLASSPATH と -classpath の ど ち ら も 指 定 さ れ て い な い 場 合 、 ユ ー ザ ク ラ ス パ ス は 現 在 の デ ィ レ ク ト リ に な り ま す 。 詳 細 は 、 「 ク ラ ス パ ス の 設 定 」 を 参 照 し て く だ さ い 。
-sourcepath オ プ シ ョ ン が 指 定 さ れ て い な い 場 合 は 、 ク ラ ス フ ァ イ ル 同 様 、 ソ ー ス フ ァ イ ル も ユ ー ザ ク ラ ス パ ス で 検 索 さ れ ま す 。
-d directory
ク ラ ス フ ァ イ ル の 出 力 先 デ ィ レ ク ト リ を 設 定 し ま す 。 出 力 先 デ ィ レ ク ト リ は す で に 存 在 し て い る 必 要 が あ り ま す 。 javac は 出 力 先 デ ィ レ ク ト リ を 作 成 し ま せ ん 。 ク ラ ス が パ ッ ケ ー ジ の 一 部 で あ る 場 合 、 javac は 、 必 要 に 応 じ て デ ィ レ ク ト リ を 作 成 し 、 パ ッ ケ ー ジ 名 を 反 映 し た サ ブ デ ィ レ ク ト リ に ク ラ ス フ ァ イ ル を 置 き ま す 。 た と え ば 、 -d /home/myclasses と 指 定 し 、 ク ラ ス の 名 前 が com.mypackage.MyClass で あ る 場 合 、 ク ラ ス フ ァ イ ル は /home/myclasses/com/mypackage/MyClass.class に な り ま す 。
-d が 指 定 さ れ て い な い 場 合 、 javac は ソ ー ス フ ァ イ ル と 同 じ デ ィ レ ク ト リ に ク ラ ス フ ァ イ ル を 置 き ま す 。
-d で 指 定 さ れ た デ ィ レ ク ト リ が ユ ー ザ ク ラ ス パ ス に 自 動 的 に 追 加 さ れ る わ け で は な い こ と に 注 意 し て く だ さ い 。
-deprecation
推 奨 さ れ な い メ ン バ や ク ラ ス が 、 使 用 あ る い は オ ー バ ー ラ イ ド さ れ る た び に 説 明 を 表 示 し ま す 。 -deprecation が 指 定 さ れ て い な い 場 合 、 javac は 、 推 奨 さ れ な い メ ン バ や ク ラ ス を 使 用 あ る い は オ ー バ ー ラ イ ド し て い る ソ ー ス フ ァ イ ル の 名 前 を 表 示 し ま す 。
−encoding encoding
ソ ー ス フ ァ イ ル の エ ン コ ー デ ィ ン グ 名 (EUCJIS/SJIS な ど ) を 指 定 し ま す 。 -encoding が 指 定 さ れ て い な い 場 合 は 、 プ ラ ッ ト フ ォ ー ム の デ フ ォ ル ト コ ン バ ー タ が 使 わ れ ま す 。
-g |
局 所 変 数 を 含 む す べ て の デ バ ッ グ 情 報 を 生 成 し ま す 。 デ フ ォ ル ト で は 、 行 番 号 お よ び ソ ー ス フ ァ イ ル 情 報 だ け が 生 成 さ れ ま す 。 |
-g:none
デ バ ッ グ 情 報 を 生 成 し ま せ ん 。
-g:keyword-list
カ ン マ で 区 切 ら れ た キ ー ワ ー ド リ ス ト に よ り 指 定 さ れ た 、 特 定 の 種 類 の デ バ ッ グ 情 報 だ け を 生 成 し ま す 。 次 の キ ー ワ ー ド が 有 効 で す 。
source |
ソ ー ス フ ァ イ ル の デ バ ッ グ 情 報 |
|||
lines |
行 番 号 の デ バ ッ グ 情 報 |
|||
vars |
局 所 変 数 の デ バ ッ グ 情 報 |
|||
−help |
標 準 オ プ シ ョ ン の 形 式 を 表 示 し ま す 。
-nowarn
警 告 メ ッ セ ー ジ を 表 示 し ま せ ん 。
−source release
表 明 を 含 む ソ ー ス コ ー ド の コ ン パ イ ル に 対 す る サ ポ ー ト を 有 効 に し ま す 。
release が 1.4 に 設 定 さ れ る と 、 コ ン パ イ ラ は 表 明 を 含 む コ ー ド を 受 け 入 れ ま す 。 表 明 は 、 J2SE 1.4 で 導 入 さ れ ま し た 。
release が 1.3 に 設 定 さ れ る と 、 コ ン パ イ ラ は 表 明 を サ ポ ー ト し ま せ ん 。 −source フ ラ グ が 使 用 さ れ な い 場 合 、 コ ン パ イ ラ は デ フ ォ ル ト で 1.3 の 動 作 に な り ま す 。
-sourcepath sourcepath
ク ラ ス ま た は イ ン タ フ ェ ー ス の 定 義 を 検 索 す る ソ ー ス コ ー ド パ ス を 指 定 し ま す 。 ユ ー ザ ク ラ ス パ ス 同 様 、 ソ ー ス パ ス の 複 数 の エ ン ト リ は コ ロ ン (:) で 区 切 り ま す 。 ソ ー ス パ ス の エ ン ト リ に は 、 デ ィ レ ク ト リ 、 JAR ア ー カ イ ブ 、 ま た は ZIP ア ー カ イ ブ を 指 定 で き ま す 。 パ ッ ケ ー ジ を 使 っ て い る 場 合 は 、 デ ィ レ ク ト リ ま た は ア ー カ イ ブ 内 の ロ ー カ ル パ ス 名 が パ ッ ケ ー ジ 名 を 反 映 し て い な け れ ば な り ま せ ん 。
ソ ー ス が 見 つ か っ た 場 合 、 ク ラ ス パ ス で 見 つ か っ た ク ラ ス は 、 自 動 再 コ ン パ イ ル の 対 象 に な り ま す 。
-verbose
冗 長 出 力 を 指 定 し ま す 。 ロ ー ド さ れ る ク ラ ス お よ び コ ン パ イ ル さ れ る ソ ー ス フ ァ イ ル ご と に 情 報 を 出 力 し ま す 。
ク
ロ ス コ ン パ イ
ル オ プ シ ョ ン
デ フ ォ ル ト で
は 、 ク ラ ス の
コ ン パ イ ル は
、 javac が 添 付 さ
れ て い る JDK の ブ
ー ト ス ト ラ ッ
プ ク ラ ス お よ
び 拡 張 機 能 ク
ラ ス に 対 し て
行 わ れ ま す 。
し か し 、 javac は
、 異 な る Java プ ラ
ッ ト フ ォ ー ム
の 実 装 の ブ ー
ト ス ト ラ ッ プ
ク ラ ス お よ び
拡 張 機 能 ク ラ
ス に 対 し て コ
ン パ イ ル を 行
う 「 ク ロ ス コ
ン パ イ ル 」 も
サ ポ ー ト し て
い ま す 。 ク ロ
ス コ ン パ イ ル
を 行 う 場 合 は
、 -bootclasspath お よ び
-extdirs を 使 う こ と
が 重 要 で す 。
以 下 の 「 ク ロ
ス コ ン パ イ ル
の 例 」 を 参 照
し て く だ さ い
。
-bootclasspath bootclasspath
指 定 さ れ た 一 連 の ブ ー ト ク ラ ス に 対 し て ク ロ ス コ ン パ イ ル を 行 い ま す 。 ユ ー ザ ク ラ ス パ ス 同 様 、 ブ ー ト ク ラ ス パ ス の 複 数 の エ ン ト リ は コ ロ ン (:) で 区 切 り ま す 。 ブ ー ト ク ラ ス パ ス の エ ン ト リ に は 、 デ ィ レ ク ト リ 、 JAR ア ー カ イ ブ 、 ま た は ZIP ア ー カ イ ブ を 指 定 で き ま す 。
-extdirs directories
指 定 さ れ た 拡 張 機 能 デ ィ レ ク ト リ に 対 し て ク ロ ス コ ン パ イ ル を 行 い ま す 。 directories に は 、 コ ロ ン で 区 切 っ た デ ィ レ ク ト リ の リ ス ト を 指 定 し ま す 。 指 定 さ れ た デ ィ レ ク ト リ 内 の 各 JAR ア ー カ イ ブ で 、 ク ラ ス フ ァ イ ル が 検 索 さ れ ま す 。
-target version
指 定 さ れ た バ ー ジ ョ ン の VM 上 で 動 作 す る ク ラ ス フ ァ イ ル を 生 成 し ま す 。 デ フ ォ ル ト で は 、 1.2 VM と 互 換 性 の あ る ク ラ ス フ ァ イ ル を 生 成 し ま す 。 1 つ だ け 例 外 が あ り 、 -source 1.4 オ プ シ ョ ン を 使 用 す る と 、 デ フ ォ ル ト の タ ー ゲ ッ ト は 1.4 に な り ま す 。 サ ポ ー ト さ れ て い る バ ー ジ ョ ン は 以 下 の と お り で す 。
1.1 |
生 成 す る ク ラ ス フ ァ イ ル が 、 1.1 VM と 1.2 VM に 互 換 性 が あ る こ と を 保 証 し ま す 。 | ||
1.2 |
1.2 VM 上 で は 動 作 す る が 、 1.1 VM 上 で は 動 作 し な い ク ラ ス フ ァ イ ル を 生 成 し ま す 。 こ れ が デ フ ォ ル ト の オ プ シ ョ ン で す 。 | ||
1.3 |
Java 2 SDK, バ ー ジ ョ ン 1.3 お よ び そ れ 以 降 の VM で は 動 作 す る が 、 1.1 VM ま た は 1.2 VM 上 で は 動 作 し な い ク ラ ス フ ァ イ ル を 生 成 し ま す 。 | ||
1.4 |
1.4 VM と の み 互 換 性 が あ る ク ラ ス フ ァ イ ル を 生 成 し ま す 。 |
非
標 準 オ プ シ ョ
ン
-Joption
javac が 呼 び 出 す java 起 動 コ マ ン ド に 、 option を 渡 し ま す 。 た と え ば 、 -J-Xms48m と 指 定 す る と 、 ス タ ー ト ア ッ プ メ モ リ は 48M バ イ ト に 設 定 さ れ ま す 。 こ の オ プ シ ョ ン は -X で 始 ま っ て い ま せ ん が 、 javac の 「 標 準 オ プ シ ョ ン 」 で は あ り ま せ ん 。 -J を 使 っ て 、 オ プ シ ョ ン を Java で 記 述 さ れ た ア プ リ ケ ー シ ョ ン を 実 行 す る 背 後 の VM に 渡 す こ と は 、 よ く 行 わ れ て い ま す 。
CLASSPATH 、 -classpath 、 -bootclasspath 、 お よ び -extdirs は 、 javac の 実 行 に 使 う ク ラ ス を 指 定 す る も の で は あ り ま せ ん 。 こ の よ う な 方 法 で コ ン パ イ ラ の 実 装 を 操 作 す る こ と は 、 通 常 は 無 意 味 で あ り 、 常 に 危 険 を 伴 い ま す 。 こ の よ う な 方 法 を 使 う 必 要 が あ る 場 合 は 、 -J オ プ シ ョ ン を 使 っ て 、 必 要 な オ プ シ ョ ン を 背 後 の java 起 動 コ マ ン ド に 渡 し て く だ さ い 。
-X |
非 標 準 オ プ シ ョ ン に つ い て の 情 報 を 表 示 し 、 終 了 し ま す 。 |
-Xstdout filename
コ ン パ イ ラ の メ ッ セ ー ジ を 指 定 さ れ た フ ァ イ ル に 送 信 し ま す 。 デ フ ォ ル ト で は 、 コ ン パ イ ラ の メ ッ セ ー ジ は System.err に 送 信 さ れ ま す 。
−Xswitchcheck
switch ブ ロ ッ ク で "失 敗 す る case" を 検 査 し て 、 検 出 さ れ た と こ ろ で 警 告 メ ッ セ ー ジ を 表 示 し ま す 。 "失 敗 す る case" と は 、 case が switch ブ ロ ッ ク 内 に あ り 、 ブ ロ ッ ク 内 の 最 後 の case で は な く 、 そ の コ ー ド に break 文 が 含 ま れ な い 場 合 で 、 コ ー ド の 実 行 が こ の case か ら 次 の case ま で "失 敗 す る " こ と を 許 し ま す 。 た と え ば 、 次 の 例 で 、 こ の switch ブ ロ ッ ク 内 の case 1 ラ ベ ル に 続 く コ ー ド に は break 文 が 含 ま れ て い ま せ ん 。 :
switch (x) {
case 1:
System.out.println("1");
// break; 文 が な い 。
case 2:
System.out.println("2");
}
こ の コ ー ド を コ ン パ イ ル す る と き に −Xswtichcheck フ ラ グ を 使 用 す る と 、 コ ン パ イ ラ は 、 問 題 の あ る case の 行 番 号 と と も に 、 "case で 失 敗 す る 可 能 性 " に つ い て 警 告 を 発 行 し ま す 。
コ マ ン ド 行 引 数 フ ァ イ ル
javac コ マ ン ド 行 を 短 縮 、 あ る い は 簡 潔 に す る た め 、 javac コ マ ン ド に 対 す る 引 数 を 含 む フ ァ イ ル を 1 つ 以 上 指 定 で き ま す 。 こ れ に よ り 、 任 意 の オ ペ レ ー テ ィ ン グ シ ス テ ム 上 で 任 意 の 長 さ の javac コ マ ン ド を 作 成 で き ま す 。
引 数 フ ァ イ ル に は 、 javac オ プ シ ョ ン と ソ ー ス フ ァ イ ル 名 を 任 意 の 組 み 合 わ せ で 入 れ る こ と が で き ま す 。 フ ァ イ ル 中 の 引 数 は 、 空 白 文 字 ま た は 改 行 で 区 切 り ま す 。 引 数 フ ァ イ ル 中 の フ ァ イ ル 名 は 、 引 数 フ ァ イ ル の 位 置 で は な く 、 現 在 の デ ィ レ ク ト リ と の 相 対 位 置 で 表 し ま す 。 引 数 の リ ス ト に 、 ワ イ ル ド カ ー ド (*) は 使 用 で き ま せ ん ( *.java の よ う な 指 定 )。 フ ァ イ ル を 再 帰 的 に 解 釈 す る @ 文 字 の 使 用 は サ ポ ー ト さ れ て い ま せ ん 。
javac を 実 行 す る と 、 各 引 数 フ ァ イ ル の パ ス お よ び 名 前 に 「 @ 」 で 始 ま る 文 字 列 が 渡 さ れ ま す 。 javac が 「 @ 」 文 字 で 始 ま る 引 数 を 検 出 す る と 、 そ の フ ァ イ ル の 内 容 が 属 性 リ ス ト に 展 開 さ れ ま す 。
例 -
引 数 フ ァ イ ル
を 1 つ 使 用
す べ て の javac 引 数
を 持 つ argfile と い
う 名 前 の 引 数
フ ァ イ ル を 1 つ
使 用 し ま す 。
example% javac @argfile
こ の 引 数 フ ァ イ ル に は 、 次 の 例 で 示 す 両 方 の フ ァ イ ル の 内 容 を 入 れ る こ と が で き ま す 。
例 -
引 数 フ ァ イ ル
を 2 つ 使 用
2 つ の 引 数 フ ァ
イ ル を 作 成 で
き ま す 。 1 つ は
javac オ プ シ ョ ン 用
、 も う 1 つ は ソ
ー ス フ ァ イ ル
用 で す (次 の リ
ス ト に は 、 行
を つ な ぐ 文 字
列 が 使 用 さ れ
て い な い こ と
に 注 意 し て く
だ さ い )。
以 下 の も の を 含 む options と い う 名 前 の フ ァ イ ル を 作 成 し ま す 。
−d
classes
−g
−sourcepath
\java\pubs\ws\1.3\src\share\classes
以 下 の も の を 含 む
classes と い う 名 前 の フ ァ イ ル を 作 成 し ま す 。
MyClass1.java
MyClass2.java
MyClass3.java
次 の コ マ ン ド で 、 javac を 実 行 し ま す 。
example% javac @options @classes
例 -
パ ス を 指 定 し
た 引 数 フ ァ イ
ル
引 数 フ ァ イ ル
に は パ ス を 指
定 で き ま す が
、 引 数 フ ァ イ
ル 内 の フ ァ イ
ル 名 は す べ て
、 現 在 の 作 業
用 デ ィ レ ク ト
リ ( path1 で も path2
で も な く ) と の
相 対 位 置 で 表
し ま す 。
example% javac @path1\options @path2\classes
使 用 例
簡
単 な プ ロ グ ラ
ム の コ ン パ イ
ル
次 に 示 す ソ ー
ス フ ァ イ ル
Hello.java で は 、
greetings.Hello と い う 名
前 の ク ラ ス を
定 義 し て い ま
す 。 greetings デ ィ レ
ク ト リ は 、 ソ
ー ス フ ァ イ ル
と ク ラ ス フ ァ
イ ル の 両 方 の
パ ッ ケ ー ジ デ
ィ レ ク ト リ で
、 現 在 の デ ィ
レ ク ト リ の す
ぐ 下 に あ り ま
す 。 こ の た め
、 こ の 例 で は
デ フ ォ ル ト ユ
ー ザ ク ラ ス パ
ス を 使 用 で き
ま す 。 ま た 、
-d を 使 っ て 別
の 出 力 先 デ ィ
レ ク ト リ を 指
定 す る 必 要 も
あ り ま せ ん 。
example% ls
greetings/
example% ls greetings
Hello.java
example% cat greetings/Hello.java
package greetings;
public class
Hello {
public static void main(String[] args) {
for (int i=0; i < args.length; i++) {
System.out.println("Hello " + args[i]);
}
}
}
example% javac greetings/Hello.java
example% ls greetings
Hello.class Hello.java
example% java greetings.Hello World Universe Everyone
Hello World
Hello Universe
Hello Everyone
複
数 の ソ ー ス フ
ァ イ ル の コ ン
パ イ ル
次 の 例 は 、 パ
ッ ケ ー ジ greetings 内
の す べ て の ソ
ー ス フ ァ イ ル
を コ ン パ イ ル
し ま す 。
example% ls
greetings/
example% ls greetings
Aloha.java GutenTag.java Hello.java Hi.java
example% javac greetings/*.java
example% ls greetings
Aloha.class GutenTag.class Hello.class Hi.class
Aloha.java GutenTag.java Hello.java Hi.java
ユ
ー ザ ク ラ ス パ
ス の 指 定
上 の 例 の ソ ー
ス フ ァ イ ル の
う ち 、 1 つ を 変
更 し 、 変 更 後
の フ ァ イ ル を
再 コ ン パ イ ル
し ま す 。
example% pwd
/examples
example% javac greetings/Hi.java
greetings.Hi は 、 greetings パ ッ ケ ー ジ 内 の ほ か の ク ラ ス を 参 照 し て い る た め 、 コ ン パ イ ラ は こ れ ら の ほ か の ク ラ ス を 探 す 必 要 が あ り ま す 。 上 の 例 で は 、 デ フ ォ ル ト ユ ー ザ ク ラ ス パ ス が 、 パ ッ ケ ー ジ デ ィ レ ク ト リ を 含 む デ ィ レ ク ト リ と 同 じ な の で 、 コ ン パ イ ル は 適 切 に 行 わ れ ま す 。 た だ し 、 現 在 ど の デ ィ レ ク ト リ に い る か に 関 係 な く フ ァ イ ル を コ ン パ イ ル し た い 場 合 は 、 ユ ー ザ ク ラ ス パ ス に /examples を 追 加 す る 必 要 が あ り ま す 。 ユ ー ザ ク ラ ス パ ス に エ ン ト リ を 追 加 す る に は CLASSPATH を 設 定 す る 方 法 も あ り ま す が 、 こ こ で は -classpath オ プ シ ョ ン を 使 い ま す 。
example% javac -classpath /examples /examples/greetings/Hi.java
再 度 greetings.Hi を 変 更 し 、 バ ナ ー ユ ー テ ィ リ テ ィ を 使 う よ う に し た 場 合 は 、 こ の バ ナ ー ユ ー テ ィ リ テ ィ も ユ ー ザ ク ラ ス パ ス を 通 じ て ア ク セ ス で き る よ う に な っ て い る 必 要 が あ り ま す 。
example%
javac -classpath /examples:/lib/Banners.jar \
/examples/greetings/Hi.java
greetings 内 の ク ラ ス を 実 行 す る に は 、 greetings と 、 greetings が 使 う ク ラ ス の 両 方 に ア ク セ ス で き る 必 要 が あ り ま す 。
example% java -classpath /examples:/lib/Banners.jar greetings.Hi
ソ
ー ス フ ァ イ ル
と ク ラ ス フ ァ
イ ル の 分 離
特 に 大 規 模 プ
ロ ジ ェ ク ト の
場 合 は 、 ソ ー
ス フ ァ イ ル と
ク ラ ス フ ァ イ
ル を 別 の デ ィ
レ ク ト リ に 置
く と 便 利 な こ
と が あ り ま す
。 ク ラ ス フ ァ
イ ル 出 力 先 を
別 個 に 指 定 す
る に は 、 -d を
使 い ま す 。 ソ
ー ス フ ァ イ ル
が ユ ー ザ ク ラ
ス パ ス に は な
い の で 、 -sourcepath
を 使 っ て 、 コ
ン パ イ ラ が ソ
ー ス フ ァ イ ル
を 見 つ け る こ
と が で き る よ
う に し ま す 。
example% ls
classes/ lib/ src/
example% ls src
farewells/
example% ls src/farewells
Base.java GoodBye.java
example% ls lib
Banners.jar
example% ls classes
example% javac -sourcepath src -classpath
classes:lib/Banners.jar \
src/farewells/GoodBye.java -d classes
example% ls classes
farewells/
example% ls classes/farewells
Base.class GoodBye.class
コ マ ン ド 行 で は src/farewells/Base.java を 指 定 し て い ま せ ん が 、 こ の フ ァ イ ル も コ ン パ イ ラ に よ っ て コ ン パ イ ル さ れ て い る こ と に 注 意 し て く だ さ い 。 自 動 コ ン パ イ ル を ト レ ー ス す る に は 、 -verbose オ プ シ ョ ン を 使 っ て く だ さ い 。
ク
ロ ス コ ン パ イ
ル の 例
こ こ で は 、 JDK 1.2
javac を 使 っ て 1.1 VM
上 で 実 行 す る
コ ー ド を コ ン
パ イ ル し ま す
。
example%
javac -target 1.1 -bootclasspath jdk1.1.7/lib/classes.zip \
-extdirs "" OldCode.java
-target 1.1 オ プ シ ョ ン に よ り 、 生 成 さ れ る ク ラ ス フ ァ イ ル が 1.1 VM に 互 換 性 が あ る こ と が 保 証 さ れ ま す 。 JDK1.2 で は 、 javac は 、 デ フ ォ ル ト で 1.1 へ の 互 換 性 を 維 持 し て コ ン パ イ ル を 行 う の で 、 こ の オ プ シ ョ ン は 厳 密 に は 必 要 あ り ま せ ん 。 た だ し 、 コ ン パ イ ラ に よ っ て デ フ ォ ル ト が 異 な る 可 能 性 が あ る の で 、 こ の オ プ シ ョ ン を 指 定 す る 習 慣 を つ け て お く と よ い で し ょ う 。
JDK 1.2 javac は 、 デ フ ォ ル ト で は 、 1.2 の ブ ー ト ス ト ラ ッ プ ク ラ ス に 対 し て コ ン パ イ ル を 行 う の で 、 JDK 1.2 で は な く JDK 1.1 の ブ ー ト ス ト ラ ッ プ ク ラ ス に 対 し て コ ン パ イ ル を 行 う よ う に 指 定 す る 必 要 が あ り ま す 。 こ れ は 、 -bootclasspath お よ び -extdirs を 使 っ て 行 い ま す 。 こ の 指 定 を 行 わ な い と 、 1.1 VM に は 存 在 し な い 1.2 API に 対 応 し た コ ン パ イ ル が 行 わ れ る た め 、 実 行 中 に 障 害 が 発 生 す る 可 能 性 が あ り ま す 。
関 連 項 目
jar(1)、 java(1)、 javadoc(1)、 javah(1)、 javap(1)、 jdb(1)
次
に つ い て は 、 Java
の Web サ イ ト を 参
照 ま た は 検 索
し て く だ さ い
。
Java Extensions Mechanism @
http://java.sun.com/j2se/1.4/docs/guide/extensions/index.html : 英 語 版