40

SunのドキュメントとStackOverflowに関する多くの投稿を読みましたが、Javaコンパイラオプション-cpとの違いについてはまだ混乱しています-sourcepath

私がこのディレクトリ構造を持っているとしましょう:

c:\Java\project1\src (where the Java source files are)  
c:\Java\project1\bin (where the Java class files will be or already are)  

MainClass.javaまた、パッケージにソースファイルがcom.mypackageあり、ソースフォルダのディレクトリ構造に問題がないとします。

私はproject1ディレクトリにいて、次を実行します。

javac -d bin -sourcepath src src/com/mypackage/MainClass.java  

また

javac -d bin -classpath src src/com/mypackage/MainClass.java  

同じ結果が得られます。詳細モードでは、ソースファイルの検索パスはsrcどちらの場合もです。

誰かが私がこれらのオプションの詳細を理解するのを手伝ってくれるなら、それは素晴らしいことです。

4

4 に答える 4

28
 -classpath classpath

CLASSPATH環境変数のユーザークラスパスを上書きして、ユーザークラスパスを設定します。CLASSPATHも-classpathも指定されていない場合、ユーザークラスパスは現在のディレクトリで構成されます。

-sourcepathオプションが指定されていない場合、ユーザークラスパスでソースファイルとクラスファイルが検索されます。

-sourcepath sourcepath

クラスまたはインターフェイス定義を検索するためのソースコードパスを指定します。ユーザークラスパスと同様に、ソースパスエントリはセミコロン(;)で区切られ、ディレクトリ、JARアーカイブ、またはZIPアーカイブにすることができます。パッケージを使用する場合、ディレクトリまたはアーカイブ内のローカルパス名はパッケージ名を反映している必要があります。

クラスパスで見つかったクラスは、ソースが見つかった場合に自動的に再コンパイルされることに注意してください。

于 2010-03-14T10:00:14.983 に答える
14
  • sourcepathは、コンパイルするコードのルートです。
  • クラスパスには、コードだけでなく、必要なライブラリも含めることができます
于 2010-03-14T09:57:50.680 に答える
5

CLASSPATHは、コンパイラとクラスローダーに必要な.classファイルを探す場所を指示します。

Sourcepathは私があまり使用しないものです。通常、現在のディレクトリがソースパスであるため、これはオプションだと思います。CLASSPATHはそうではありません。

于 2010-03-14T09:58:37.140 に答える
5
  • classpath は、クラス (.class) ファイルを検索します
  • sourcepath は、ソース (.java) ファイル (.aka クラスまたはインターフェイス定義)を検索します。

ただし、sourcepath が指定されていない場合、クラスパスはクラス ファイルとソース ファイルの両方で検索されます。

これにより、クラスパスのみを使用し、ソースパスを完全に回避することで、ほとんどの場合物事を単純に保つことができると私は信じています。

クラスパスとソースパスの両方を使用する必要がある人は、おそらく奇妙なディレクトリの内容をターゲットにしています。たとえば、ソース ファイルとクラス ファイルを含むフォルダーがあり、ソース ファイルのみを検索したい場合があります。

于 2016-01-21T21:13:21.420 に答える