Servlet容器和类路径

Servlet容器集的类路径是什么?

据我了解,涉及三个组成部分。 JAR文件位于Servlet容器的lib目录中,然后是WEB-INF/classesWEB-INF/lib目录中的JAR文件。 Servlet容器的lib目录中的类被添加到系统类路径中,动态类路径包括lib目录中的JAR文件和classes目录中的classes

什么是动态类路径集? 动态类路径是指向WEB-INF下的所有目录还是包含WEB-INF/libWEB-INF/classes所有单个类和JAR文件,或者只指向WEB-INF/classesWEB-INF/lib这两个目录WEB-INF/lib ? 假设我在WEB-INF中有一个名为foo的目录,其中包含bar.properties 。 现在bar.properties也在类路径中?

“动态”类路径将列出WEB-INF/classesWEB-INF/lib下的每个JAR文件作为单独的条目。 WEB-INF下的其他文件夹包括在内。

在您的示例中, bar.properties不在类路径中。 将其移至WEB-INF/classes ,或将其放在WEB-INF/lib下的JAR文件中。

其余类路径中的内容取决于您的Servlet容器。 它是特定于实现的,但是大多数容器还有两个放置类的地方。 一个是容器可见的目录,但不是应用程序,另一个对容器和所有应用程序都是可见的。 由于第二个ClassLoader对所有应用程序都可见,因此可以使用这些类的static成员在应用程序之间共享信息。

在您的示例中,bar.properties需要在classes目录下位于类路径中。