Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java配置生成路径或WEB-INF/lib文件夹_Java_Jakarta Ee_Build_Jar_Classpath - Fatal编程技术网

Java配置生成路径或WEB-INF/lib文件夹

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中的应用程序中。将它们放在全球范围内有几个后果

我看过很多教程和应用程序,它们将JAR放在构建路径中,而其他人将JAR放在web inf/lib文件夹中,有什么显著区别吗?两者的利弊是什么?对于我来说,将某个jar放入libs文件夹并将其放入构建路径的指标是什么?

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

真正的问题是将JAR放在
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文件夹下。

      您能提供一些文档吗?