Servlet容器和类路径
Servlet容器集的类路径是什么?
据我了解,涉及三个组成部分。 JAR文件位于Servlet容器的lib
目录中,然后是WEB-INF/classes
和WEB-INF/lib
目录中的JAR文件。 Servlet容器的lib
目录中的类被添加到系统类路径中,动态类路径包括lib
目录中的JAR文件和classes目录中的classes
。
什么是动态类路径集? 动态类路径是指向WEB-INF
下的所有目录还是包含WEB-INF/lib
和WEB-INF/classes
所有单个类和JAR文件,或者只指向WEB-INF/classes
和WEB-INF/lib
这两个目录WEB-INF/lib
? 假设我在WEB-INF
中有一个名为foo
的目录,其中包含bar.properties
。 现在bar.properties
也在类路径中?
“动态”类路径将列出WEB-INF/classes
, WEB-INF/lib
下的每个JAR文件作为单独的条目。 WEB-INF
下的其他文件夹不包括在内。
在您的示例中, bar.properties
不在类路径中。 将其移至WEB-INF/classes
,或将其放在WEB-INF/lib
下的JAR文件中。
其余类路径中的内容取决于您的Servlet容器。 它是特定于实现的,但是大多数容器还有两个放置类的地方。 一个是容器可见的目录,但不是应用程序,另一个对容器和所有应用程序都是可见的。 由于第二个ClassLoader
对所有应用程序都可见,因此可以使用这些类的static
成员在应用程序之间共享信息。
在您的示例中,bar.properties需要在classes目录下位于类路径中。