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