4

Javaでのクラスのロードについて読んでいます。

動機

このように見えるクラスローダー階層があると仮定すると、によってFirstロードされたクラスは、によってロードされたクラスから直接アクセスできないことを理解していますSecond(逆もまた同様です)。

 Bootstrap
     |
   System
     |
   Common
   /    \
First Second

また、クラスローダーがクラスをロードできるかどうかを親クラスローダーに確認し、そうであれば、ロードを親に委任することも理解しています。

質問

クラスローダーは、特定のクラスをロードできるかどうかを実際にどのように判断しますか?

4

3 に答える 3

5

クラスローダの実装によって異なります。ただし、ClassLoader がロードできるすべてのクラスは、ClassLoader.findClass(String)によって取得されます。

多くの実装がありますが、最も一般的な実装は、ディレクトリと jar ファイルからクラスをロードするURLClassLoaderです。

于 2013-03-06T13:30:29.953 に答える
0

クラスローダーは、パス変数内のすべてのクラス(Javaクラスファイル)をチェックします。CLASSPATHクラスがそこにある場合は存在し、そうでない場合は存在しません。

したがって、実際には/srcディレクトリとすべてのサブディレクトリ(=パッケージ)がスキャンされます。

于 2013-03-06T13:24:08.593 に答える
0

クラスローダは、要求されたクラス名をファイル名に変換し、ファイル システムからその名前の「クラス ファイル」を見つけようとします。@poitroae が指摘しているように、設定されている場合は CLASSPATH 変数を開始場所として使用します。ほとんどの IDE などはこれを拡張して、プロジェクトの作業ディレクトリを含めます。

于 2013-03-06T13:31:57.317 に答える