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

7

我看过很多教程和应用程序,有些将它们的jar包放在构建路径中,而另一些则将其放在web-inf/lib文件夹中,这两种方法有什么显著的区别?它们各自的优缺点是什么?我何时应该将某个jar包放在libs文件夹中,将jar包放在构建路径中呢?

2个回答

12

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

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

如果您只是将它们放在其他地方并将它们包含在构建路径中,当您导出项目时,您必须声明要包含在构建路径中的JAR包。

基本上没有什么大的区别,但是如果您知道您需要在运行时使用此JAR包(即在将应用程序部署到服务器后),最好将它放在WEB-INF / lib文件夹下。


请问您能提供一些相关文档吗? - Jewels

1

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

真正的问题在于将JAR文件放置在WEB-INF/lib与容器/lib目录之间。通常情况下,你应该始终将JAR文件放在WEB-INF/lib中。全局放置它们会产生几个后果:

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

  • 如果库持有对任何你的类的引用(见上文),很容易引入内存泄漏

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接