名 前
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 : 英 語 版