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

时间:2012-12-03 07:48:41

标签: java java-ee build jar classpath

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

2 个答案:

答案 0 :(得分:12)

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

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

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

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

答案 1 :(得分:1)

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

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

  • 单身人士现在对所有网络应用程序(一个类加载器)是全局的,如果多次部署

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

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