12

サーブレットコンテナセットのクラスパスは?

私の理解では、3 つのコンポーネントが関係しています。libサーブレット コンテナのディレクトリにある JAR ファイルと、そのディレクトリにあるWEB-INF/classesおよび JAR ファイルのクラスWEB-INF/lib。サーブレット コンテナのディレクトリ内のクラスlibがシステム クラスパスに追加され、動的クラスパスにはディレクトリ内の JAR ファイルとlibディレクトリ内のクラスが含まれますclasses

動的クラスパスは何に設定されていますか? 動的クラスパスは、その下のすべてのディレクトリを指していますか、WEB-INFそれともすべての個々のクラスと JAR ファイルを含んでいますかWEB-INF/lib、または単に 2 つのディレクトリとWEB-INF/classesを指していますか? を含むinというディレクトリがあるとします。今もクラスパスですか?WEB-INF/classesWEB-INF/libfooWEB-INFbar.propertiesbar.properties

4

2 に答える 2

9

「動的」クラスパスはWEB-INF/classes、各 JAR ファイルをWEB-INF/lib個別のエントリとしてリストします。以下の他のフォルダーWEB-INFは含まれません

あなたの例でbar.propertiesは、クラスパスにはありません。に移動するWEB-INF/classesか、 の下の JAR ファイルに入れますWEB-INF/lib

クラスパスの残りの部分は、サーブレット コンテナーによって異なります。これは実装固有ですが、ほとんどのコンテナーには、クラスを配置する場所が他に 2 つあります。1 つはコンテナからは見えるがアプリケーションからは見えないディレクトリで、もう 1 つはコンテナとすべてのアプリケーションから見えるディレクトリです。2 番目のクラスローダはすべてのアプリケーションから見えるため、それらのクラスの静的メンバーを使用して、アプリケーション間で情報を共有できます。

于 2008-11-20T16:24:53.060 に答える
2

あなたの例では、bar.propertiesはクラスパスにあるためにクラスディレクトリの下にある必要があります.

于 2008-11-20T13:31:49.480 に答える