Oracle Java Compilerの起動

Oracle Java Compiler(OJC)をコマンドラインから開くには、ojc <options> file.javaと入力します。

コマンドライン・オプション

-classpath path
 
クラスの検索に使用するパス。デフォルトのCLASSPATHまたはCLASSPATH環境変数よりも優先されます。ディレクトリはセミコロンで区切ります。たとえば、myclassesディレクトリ内のクラスfoo.javaを検索するには、次のように入力します。
 
ojc -classpath c:¥¥mydir;c:¥¥jdeveloper ¥myclasses foo.java(Windows)
ojc -classpath ~/mydir;/usr/jdeveloper/myclasses foo.java(UNIX)
 
Java 2プラットフォームを使用している場合(デフォルトのターゲットはJDK 1.6)、CLASSPATHの前にSYSTEM CLASSPATHが追加されます。前述の例では、SYSTEMCLASSPATHが次のようになります。
 

Windows

%JAVAHOME%¥jre¥lib¥rt.jar;
%JAVAHOME%¥jre¥lib¥i18n.jar;
%JAVAHOME%¥jre¥lib¥sunrsasign.jar;
%JAVAHOME%¥jre¥lib¥jsse.jar;
%JAVAHOME%¥jre¥lib¥jce.jar;
%JAVAHOME%¥jre¥lib¥charsets.jar;
%JAVAHOME%¥jre¥lib¥classes;
c:¥¥mydir;
c:¥¥jdeveloper¥myclasses
 

UNIX

$JAVA_HOME/lib/rt.jar;
$JAVA_HOME/lib/i18n.jar;
$JAVA_HOME/lib/sunrsasign.jar;
$JAVA_HOME/lib/jsse.jar;
$JAVA_HOME/lib/jce.jar;
$JAVA_HOME/lib/charsets.jar;
$JAVA_HOME/lib/classes;
~/mydir;
/usr/ jdeveloper/myclasses
 
JAVAHOMEが定義されていない場合は、jdev.conf内のSetJavaHomeで定義されたJDKが使用されます。JAVAHOMEが存在しない場合は、<jdev_install>/jdeveloper/jdk内のJDK(存在する場合)が使用されます。
 
ターゲットJDKが1.6(-target 1.6を使用)の場合、CLASSPATHSYSTEM CLASSPATHが追加されます。前述の例では、次のようになります。
 
Windows
c:¥¥mydir;
c:¥¥jdeveloper¥myclasses
%JAVAHOME%¥lib¥classes.zip;
%JAVAHOME%¥classes
 
Unix
~/mydir;
~/usr/jdeveloper/myclasses
$JAVAHOME/lib/classes.zip;
$JAVAHOME/classes
 
SYSTEMCLASSPATHを変更するには、-sysclasspathオプションまたは-bootclasspathオプションを使用します。
 
-sourcepath pathlist
 
必要なJavaファイルの検索に使用するパスのセミコロンで区切られたリスト。
 
-sysclasspath pathlist
 
システム・クラス・ファイルの検索に使用するパスのセミコロンで区切られたリスト。
 
-bootclasspath pathlist
 
-sysclasspathと同じ。
 
-d outdir
 
クラス(宛先)ファイル階層のルート・ディレクトリ。
 
次に例を示します。
 
ojc -d C:¥¥JDeveloper¥myclasses JavaBean.java(Windows)
ojc -d ~/usr/jdeveloper/myclasses JavaBean.java (Unix)
 
この場合、JavaBean.javaに、MyPackageというパッケージ文が含まれていると仮定すると、JavaBean.javaソース・ファイルで定義されたクラスのclassファイルは、C:¥JDeveloper¥myclasses¥MyPackageディレクトリに保存されます。
 
Javaファイルは、SOURCEPATHから読み取られ、クラス・ファイルはCLASSPATHディレクトリに書き込まれます。宛先ディレクトリは、CLASSPATHに含まれる場合もあります。デフォルトの宛先は、ソース・ファイルのパッケージ構造と一致し、ソースのルート・ディレクトリから始まります。
 
-deprecation:self
 
推奨されていないタイプ、フィールドおよびメソッドがクラスに定義されている場合に、それらの使用方法を検出します。
 
-encoding name
 
ネイティブ・エンコーディング名(またはコード・ページ名)を指定して、コンパイラがASCIIキャラクタ・セット以外の文字を解釈する方法を制御できます。デフォルトでは、プラットフォームのデフォルトのネイティブ・エンコーディング・コンバータが使用されます。詳細

次に例を示します。
 
ojc -encoding SJIS JavaBean.java
 
この場合、JavaBean.java、およびクラス・ファイルのない直接インポートしたJavaファイルがコンパイルされます。ソース・ファイルの文字は、日本語の場合すべてシフトJISキャラクタ・セットとして解釈されます。
 
 
-endorseddirs pathlist
 
Sun社が提供するデフォルト推奨規格のJDKクラスjava.endorsed.dirsのデフォルト値をオーバーライドできます。pathlistでは、パス名をセミコロンで区切ります。
 
java.endorsed.dirsの詳細は、java.sun.comで『Endorsed Standards Override Mechanism』を参照してください。
 
-exclude classname(s)
 
ビルドから除外するクラス名を指定できます。コンパイラでは、指定したクラスのpublic static voidメソッドのコールがすべて無視されます。これは主に、正式版ビルドでコンパイルが必要なコードが含まれている非正式版アプリケーション・ビルドを診断する際に役立ちます。セミコロンで複数のクラスを区切るか、-excludeを複数回指定すると、複数のクラスを除外できます。たとえば、-exclude p1;p2;p3 -exclude p4と入力すると、p1、p2、p3、p4の4つのクラスが除外されます。
 
注意: このオプションは、JDeveloper IDE(「プロジェクト・プロパティ」ダイアログの「コンパイラ」→オプション」・ページ)でもサポートされています。
 
-excludeオプションの例:

// beginning of excludeTest.java
public class excludeTest
{
  public static void main(String argv[])
   
  {
    diag.Trace("Application is about to start"); 
    System.out.println("Test successful"); 
    diag.Trace("Application is about to end");
  }
}
class diag
{
  static void Trace(String msg)
  {
    System.out.println(msg);
  }
}

// end of excludeTest.java
-excludeオプションを使用せずに前述のアプリケーションをコンパイルすると、次のように出力されます。
 
Application is about to start
Test successful
Application is about to end
 
次の-excludeオプションを使用してコンパイルします。
 
ojc -exclude diag excludeTest.java
 
次のように出力されます。
 
Test successful
 
diag.Traceのコールはすべて無視されます。
 
-extdirs pathlist
 
コンパイラが拡張機能を検索する場所をオーバーライドするパスのセミコロンで区切られたリスト。
 
-g
 
クラス・ファイルにデバッグ情報を生成します。クラスのデバッグ中にローカル変数などの情報にアクセスする場合に必要です。
 
-g:none
 
クラス・ファイルにデバッグ情報を生成しないように指定します。
 
-g:source,lines,vars
 
クラス・ファイルに選択的なデバッグ情報を生成します。
 
-help
-?
 
OJCコンパイラのオプションを表示します。
 
-make depfilename
 
依存性チェックに指定の依存性ファイルを使用します。指定したファイルが見つからない場合は作成されます。
 
-msglimit:#
 
出力に書き込まれるエラーおよび警告の最大数です。無制限にするには、-1を使用します。デフォルトは1000です。
 
-noquiet
 
コンパイルされているファイルの名前を表示します。
 
-nowarn:<id>
 
引数を付けて指定すると、ユーザーが入力した番号に関連付けられている警告を抑止します。
 
-nowarn:486
未使用のimportを抑止します。
 
-nowarn:487
部分使用のimportを抑止します。

-nowarn-warnを次のように組み合せることもできます。
-nowarn -warn:487
警告487のみ出力します。
-nowrite
 
クラス・ファイルを出力せずにプログラムをコンパイルします。
 
 
-p パッケージ名(複数可)
 
指定したパッケージ内で見つかったソース・ファイルをすべてコンパイルします。
 
-rebuild
 
依存性に関係なく、指定されたファイルを再ビルドします。-makeオプションが使用されていないかぎり、再ビルドになります。
 
-recurse [level]
 
コンパイラに、ワイルド・カードを含むファイル名指定を展開する際、ディレクトリ内を再帰検索するように指定します。
 
次に例を示します。
 
ojc -recurse foo/*java
 
これは、次のように入力することと同じです。
 
ojc foo/bar/*java foo/lish/*java foo/lish/lee/*java
 
[level]オプションは、最大再帰レベルを指定するオプションの整数の引数です。
 
次に例を示します。
 
ojc -recurse 1 foo/*java
 
これは、次のように入力することと同じです。
 
ojc foo/bar/*java foo/lish/*java
 
foo/lish/lee/*javaは、[level]変数の範囲内にありません。
 
-s sourcefile
 
指定されたソース・ファイル名をコンパイルします。
 
-source {1.1|1.2|1.3|1.4|1.5|1.6}
デフォルトでは、ソースはJ2SE 1.5と互換性があり、ソース・コードでJ2SEアサーションが有効になります。ソースの互換性レベルをJ2SE 1.4にするには-source 1.4を入力します。
 
-strictfp
 
中間浮動小数点計算に拡張精度を使用しないように指定します。
 
-target [1.1|1.2|1.3|1.4|1.5|1.6]
 
ターゲットが1.1に設定されている場合は、ojcによりJSDK 1.1用にコンパイルされます。ターゲットが1.2に設定されている場合は、ojcによりJava 2(JSDK 1.2)用にコンパイルされます。ターゲットが1.3に設定されている場合は、ojcによりJava 2 v1.3(J2SE 1.3)用にコンパイルされます。ターゲットが1.4に設定されている場合は、Java 2 v1.4(J2SE 1.4)用にコンパイルされます。
 
デフォルトのターゲットは、Sun社のjavacのデフォルトと一致するJDK 6(J2SE 1.6)です。
 
-verbose
 
どのクラス・ファイルがCLASSPATHのどこからロードされたかなど、コンパイルに関する詳細な情報を提供します。次の情報を取得できます。
-verbosepath
 
コンパイラで使用されるSOURCE PATHCLASSPATHの値を表示します。
 
-warn:<id>
警告を指定できます。抑止する警告と組み合せて、任意の数の警告を指定できます。引数なしで使用すると、すべての警告が表示されます。有用な警告としては、次の2つがあります。
 
-warn:486
未使用のimport文を表示します。
 
-warn:487
部分使用のimport文を表示します。
 
-warningtag tag[, tag]
 
javadocのコメント・タグのリスト。リストされたタグがソースのコメント内に出現した場合に、警告を出力します。タグ名はカンマを使用して区切ります。

関連項目

メイク・コマンドと再ビルド・コマンドによるビルド
Oracle Java Compiler(OJC)によるコンパイル
アプリケーションおよびプロジェクトのクリーン