【问题标题】:Including a directory inside web-inf/lib in tomcat classpath在 tomcat 类路径中包含 web-inf/lib 内的目录
【发布时间】:2012-07-03 00:08:30
【问题描述】:

在我的网络应用中; WEB-INF/lib 默认添加到类路径中,这很好。 现在,我想在我的 tomcat 的类路径中添加 spring jar 文件。如果我将所有 jar 文件放在 WEB-INF/lib 中;它工作正常。但是如果我想添加一个目录 WEB-INF/lib/spring 并将所有 jar 文件放在 spring 目录中;它不起作用。如何在类路径中包含 WEB-INF/lib/spring。

我更愿意在 web.xml 中进行更改,因为它非常适合我的 webapp。当然我不想在 catalina.properties 中进行更改,因为所有 jar 文件都加载到 JVM 中(不仅仅是添加到类路径中)

【问题讨论】:

  • %CATALINA_HOME%/lib 目录不就是这个吗?
  • 整个目的是将不同的 jar 文件隔离在不同的文件夹中,如 lib/hibernate , lib/spring .. 默认情况下,只有 lib 是类路径的一部分
  • 您不能在 WEB-INF/lib 中有子目录。正如 servlet 规范所述,classloader 只会加载 lib (/WEB-INF/lib/*.jar) 下的 jar 文件。
  • 您可以为每个 jar 文件创建一个链接,因此您仍然可以将 jar 分组。但管理链接可能不是那么容易。

标签: java tomcat classpath tomcat6


【解决方案1】:

你不应该关心 jar 文件是如何被隔离到 war 文件中的:它只被容器使用。隔离 jar 文件在您的源项目中可能很有用。但是你只需要一个构建过程(使用 ant、gradle 等)将所有子目录中的所有 jar 文件复制到WEB-INF/lib。使用蚂蚁:

<copy todir="web/WEB-INF/lib" flatten="true">
    <fileset dir="lib">
        <include name="**/*.jar"/>
    </fileset>
</copy>

【讨论】:

  • 好主意。知道如何在没有蚂蚁的情况下使用 eclipse 来做到这一点吗?我认为 Eclipse 的“构建器”可以配置为执行此类操作,但在默认安装中看不到任何明显的东西。也许有一个插件可以做到这一点?
【解决方案2】:

由于不关心 JAR 命名,另一种选择是简单地将前缀附加到 JAR(即“spring-OLD JAR NAME.jar”)以保持相关 JAR 分组而不使用文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2011-01-15
    • 2011-03-31
    • 2012-01-11
    • 2018-01-02
    • 1970-01-01
    • 2016-02-21
    相关资源
    最近更新 更多