Java配置构建路径或WEB-INF / lib文件夹

我已经看过很多教程和应用程序将他们的jar放在构建路径中,而其他人将它放在他们的web-inf / lib文件夹中,是否有任何显着差异? 两者的优点和缺点是什么? 我将一个jar放在libs文件夹中并将jar放在构建路径中的指示器是什么?

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

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

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

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

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

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

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

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

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