Manpages

名 前

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 と の み 互 換 性 が あ る ク ラ ス フ ァ イ ル を 生 成 し ま す 。

非 標 準 オ プ シ ョ ン
-J
option

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