Java配置生成路径或WEB-INF/lib文件夹
我看过很多教程和应用程序,它们将JAR放在构建路径中,而其他人将JAR放在web inf/lib文件夹中,有什么显著区别吗?两者的利弊是什么?对于我来说,将某个jar放入libs文件夹并将其放入构建路径的指标是什么?构建路径是什么意思?您使用的大多数JAR都需要在构建(编译)过程中可用,因为您的代码依赖于它们,否则它将无法编译 真正的问题是将JAR放在Java配置生成路径或WEB-INF/lib文件夹,java,jakarta-ee,build,jar,classpath,Java,Jakarta Ee,Build,Jar,Classpath,我看过很多教程和应用程序,它们将JAR放在构建路径中,而其他人将JAR放在web inf/lib文件夹中,有什么显著区别吗?两者的利弊是什么?对于我来说,将某个jar放入libs文件夹并将其放入构建路径的指标是什么?构建路径是什么意思?您使用的大多数JAR都需要在构建(编译)过程中可用,因为您的代码依赖于它们,否则它将无法编译 真正的问题是将JAR放在WEB-INF/lib目录和容器/lib目录之间。通常,您应该始终将JAR放在WEB-INF/lib中的应用程序中。将它们放在全球范围内有几个后果
WEB-INF/lib
目录和容器/lib
目录之间。通常,您应该始终将JAR放在WEB-INF/lib
中的应用程序中。将它们放在全球范围内有几个后果:
- 如果部署了多个应用程序,那么单例现在对所有web应用程序(一个类加载器)都是全局的
- 如果库包含对任何类的引用,则更容易引入内存泄漏(参见上文)
- 您不会复制相同的类(每个web应用程序将重用相同的类,而不是在每个类加载器中有单独的副本)
- 带有WEB-INF文件夹的应用程序是一个WEB应用程序。这意味着它将打包为WAR文件并部署在服务器上
如果您使用的是像eclipse这样的IDE,并且您将项目导出为WAR文件,那么它将自动将JAR放在lib文件夹下,并将其与WAR一起打包,这将使它们可用于服务器上运行的应用程序(WEB-INF/lib下的JAR包含在应用程序类路径中)
如果您只是将它们放在其他地方并将它们包含在构建路径中,那么在导出项目时,您必须声明您希望构建路径中的jar也包含在内
基本上没有什么大的区别,但是如果您知道在运行时需要这个jar(即在将应用程序部署到服务器之后),最好将它放在WEB-INF/lib文件夹下。您能提供一些文档吗?