【问题标题】:Servlet containers and classpathServlet 容器和类路径
【发布时间】:2010-09-23 05:56:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: java servlets jakarta-ee


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果包含WEB-INF lib下的其他文件夹,那么属性文件不应该包含在类路径中吗?
    • 对不起,这是一个重要的错字,我的意思是“不包括在内”!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 2010-09-20
      • 2013-02-11
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      相关资源
      最近更新 更多