0

私は認定 Java プログラマーになるつもりで、Sierra-Bates の本から勉強しています。クラスパスについて質問がありました。クラスパスは、実行/コンパイルしているクラスのサポート クラスのみを検索する必要がありますか?それとも、サポート クラスとクラス自体を検索する必要がありますか? また、クラスパスからパッケージ内のクラスを取得する場合、ルート パッケージを配置する代わりに、ファイルのアドレス (ファイルへのパス) を配置することは合法ですか。ありがとう。

4

2 に答える 2

1

1 - クラスパスは、プログラムで実行する必要がある各クラスへのアクセスを提供する必要があります。これには、メイン クラスとそれが呼び出すすべてのクラス、およびそれらが呼び出すクラスが含まれます。これらのクラスの 1 つに決して呼び出されないコードがある場合、多くの場合、呼び出されていないコードによってクラスを参照する必要はありません。

2 - パッケージのルートをクラスパスに配置する必要があります。したがって、クラス「com.bob.myprog.Main」は、クラスパスが「com」パッケージ/フォルダーがあるフォルダーを指す必要があります。「bob」フォルダーを含める必要があり、「bob」には「Main.class」を含む「myprog」フォルダーを含める必要があります。

于 2013-10-15T20:21:36.253 に答える
0

クラスパスには、サポートするクラスとクラス自体の両方が含まれている必要があります。

ただし、クラスパスを指定せずに単一のファイルを実行できる場合があります (動作します)。http://docs.oracle.com/javase/tutorial/essential/environment/paths.htmlで指定されているとおり:

クラスパスのデフォルト値は「.」で、現在のディレクトリのみが検索されることを意味します。CLASSPATH 変数または -cp コマンド ライン スイッチのいずれかを指定すると、この値が上書きされます。

したがって、クラス MyClass が現在のディレクトリにコンパイルされている場合、次のように動作します。

java MyClass

classpath を別のディレクトリに指定するとエラーが発生します (classpath には MyClass が含まれなくなります):

java -cp lib MyClass



パッケージにクラスがある場合、クラスパスにクラスファイルへのアドレスを入れるだけでは不十分です。SCJP Sun Certified Programmer for Java 5 Study Guide によると:

パッケージ内のクラスを見つけるには、パッケージの左端のエントリ (パッケージの「ルート」) をサブディレクトリとして持つディレクトリがクラスパスに存在する必要があります。

于 2013-10-15T21:30:10.467 に答える