【问题标题】:Java Configuring Build Paths or WEB-INF/lib folder [duplicate]Java配置构建路径或WEB-INF/lib文件夹[重复]
【发布时间】:2012-11-20 16:11:19
【问题描述】:

我看到很多教程和应用程序将他们的 jar 放在构建路径中,而其他人将它放在 web-inf/lib 文件夹中,有什么显着的区别吗?两者的优缺点是什么?什么是我将某个 jar 放入 libs 文件夹并将该 jar 放入构建路径中的指标?

【问题讨论】:

    标签: java jakarta-ee build jar classpath


    【解决方案1】:

    带有 WEB-INF 文件夹的应用程序是 Web 应用程序。这意味着它将被打包为 WAR 文件并部署在服务器上。

    如果您使用 Eclipse 之类的 IDE,并且将项目导出为 WAR 文件,它将自动获取 lib 文件夹下的 jar 并将它们与 WAR 一起打包,这将使它们可用于在服务器上运行的应用程序(WEB-INF/lib 下的jars 包含在应用类路径中)。

    如果您只是将它们放在其他任何位置并将它们包含在构建路径中,则在导出项目时,您必须声明您希望构建路径中的 jar 也包含在内。

    基本上没有太大区别,但是如果你知道你在运行时需要这个jar(即在将应用程序部署到服务器之后),最好把它放在WEB-INF/lib文件夹下。

    【讨论】:

    • 您能否为此提供一些文档?
    【解决方案2】:

    构建路径是什么意思?您使用的大多数 JAR 在构建(编译)期间需要可用,因为您的代码依赖于它们 - 否则将无法编译。

    真正的问题是将 JAR 放在 WEB-INF/lib 与您的容器 /lib 目录之间。一般来说,您应该始终将您的 JAR 放在 WEB-INF/lib 的应用程序中。将它们放在全球范围内会产生几个后果:

    • 如果多个部署,单例现在对所有 Web 应用程序(一个类加载器)都是全局的

    • 如果库包含对您的任何类的引用,则更容易引入内存泄漏(见上文)

    • 您不会复制相同的类(每个 Web 应用程序将重用相同的类,而不是在每个类加载器中拥有单独的副本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      相关资源
      最近更新 更多