私は次のようにソースファイルをコンパイルしています:
/home/bob/java/jdk1.5.0_06/bin/javac /home/bob/output/a.java
でクラスファイルを生成するには、このコマンドラインを変更するにはどうすればよい/home/bob/class
ですか?
また、これを機能させるには、環境変数(JAVA_HOME、CLASSPATH、JAVAPATHなど)をどのように設定する必要がありますか?
-dフラグを使用して、出力ディレクトリを指定できます。
$ javac -d /home/bob/class /home/bob/output/a.java
Javaコンパイラ(javac)オプションの完全なリストについては、このリンクを確認してください。
javacにクラスファイル/home/bob/class/a.classを作成させる方法はいくつかあります。
javacの出力が生成される場所を決定するために相互作用する2つのコンポーネントがあります。
-dオプションで設定される「宛先ディレクトリ」の値。
a.javaで定義されたクラスが'に属するパッケージ。これは、Javaソースファイルのpackageステートメントによって設定されます。
これはあなたが探している結果を得る可能性のある値の表であり、それらについてのいくつかのメモがあります
宛先ディレクトリ(-d)| パッケージ宣言| コメント / home / bob / classes | 設定されていません| あなたはおそらくこれを持っています / home / bob | クラス| 推奨されません。注1を参照してください。 / home | bob.classes | 推奨されません。 / | home.bob.classes | 推奨されません。
注1:パッケージ宣言にほぼすべての値を入れることは可能ですが、お勧めしません。推奨される方法は、クラスのパッケージ構造を、いくつかの「パッケージルート」ディレクトリを基準にしたソースファイルのレイアウトによって模倣することです。
ここではいくつかの例を示します。
パッケージ宣言| パッケージルート| ソースファイルの推奨パス z | / home / b / project1 | /home/b/project1/z/MyClass.java yz | / home / b / project1 | /home/b/project1/y/z/MyClass.java
参照する環境変数にはそれぞれ特定の「ジョブ」があり、Java開発について詳しく学ぶときに、いくつかの割り当てを行うのにおそらく役立ちます。
CLASSPATH:コードが依存するクラスファイルを見つけるためのパッケージルートであると想定されるフォルダー/jarファイルのリスト。これは、javacがdot-javaファイルをdot-classファイルに変換するために使用し、javaがjavaクラス/プログラムを実行するために使用します。javac / javaの-classpathオプションを使用する場合、この変数は無視されます。
JAVAPATH:コードが依存するJavaソースファイルを見つけるためのパッケージルートであると想定されるフォルダー/jarファイルのリスト。これは、javacコマンドによって使用されます。javacの-sourcepathオプションを使用する場合、この変数は無視されます。
JAVA_HOME:これはJavaインストールの「ルート」ディレクトリです。あなたの質問では、/ home / bob / java/jdk1.5.0_06はJAVA_HOMEです。この変数は通常、Java言語で実装されているプログラムによって使用されます。javacやjavaなどのツールは、実行時に計算できるため、JAVA_HOMEを使用しません。ほとんどの場合、人々はプロジェクトのシェルスクリプトでJAVA_HOMEを使用してプログラムを開始します。
参照する環境変数を使用しないことをお勧めします。私は約10年間Javaプログラミングを行っており、それらを設定することはめったにありません。私はコマンドラインオプションを使用する傾向があります。なんで?変数の設定が何であるかを忘れて、あなたが考えていることが起こっている状況に陥るのは簡単すぎるので、そうではありません。
javac -d /home/bob/class Test.java
生成されたクラスファイルを指定されたディレクトリに配置します
/home/bob/class/Test.class
また、他のフラグについては、環境変数を設定する必要があります。これをチェックして