・とあるコードが記述されている「Sample.java」というファイルをコンパイルした「Sample.class」を実行して利用するためには、「Sample.class」のクラスパスを指定する必要があります。
はい、必要です。javaはクラスパスに記載されたディレクトリにあるclassファイルやjarファイル(jarファイルの場合はjarファイル自体を指定)から使おうとしているクラスが書かれたファイルを探し出し、それをロードするという仕組みです。なお、カレントディレクトリに「Sample.class」があって、単純にjava Sample
等とした場合でもうまくいくのは、オプション等で指定しない標準の動作ではカレントディレクトリ.
がクラスパスに含まれているからです。
・クラスパスとは、そのファイルが保存されている場所を記したもの(どこのフォルダにあるか)。
はい、その通りです。ただ、フォルダだけで無く、jarファイルの場合はjarファイル自体を指定します。使用する予定のclassファイルがあるディレクトリまたはjarファイルのリストになります。
・「java.lang」や「java.util」などが含まれた「rt.jar」は「Sample.class」実行時にクラスパスに自動的に追加される(そのため、例えばStringクラスのクラスパスを指定しなくてはならない、などということはなくなる)
はい、その通りです。標準ライブラリは自動的にクラスパスに組み込まれますので指定する必要はありません。これらはブートスラップ・クラスパスというプロパティsun.boot.class.path
で指定された特殊なクラスパスに設定されています。通常のクラスパスの指定で上書きされたりはしません。ただ、JDKやJREに付属した全てのライブラリが含まれているとは限りませんのでご注意ください(たとえば、Java7ではJavaFXがクラスパスに含まれていませんでした。Java8からJavaFXがクラスパスに含まれています)。
その他クラスパスの仕組みについては、下記のドキュメントを参考にしてみてください。
クラスの検索方法 - Java SE 8 ドキュメント
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/24 14:23
2016/08/25 15:47