我注意到WAR文件应该有classes/和lib/目录,分别包含它们的类文件根和依赖项。
我还注意到,JAR包含这样一个lib/目录并包含它们自己的依赖关系并不常见。
所以现在我想知道为什么WAR不应该/通常-不包含它们自己的依赖项,但是WAR文件应该包含。除非我遗漏了一些东西,否则它们都要求它们的依赖项在运行时位于类路径上(JAR如果缺少依赖项就不会运行,就像WAR不会运行一样)。因此,对我来说,将依赖项放入WAR文件的所有参数也适用于JAR。
我在这里没有得到什么?!?
发布于 2012-03-15 16:28:18
从概念上看:
jar通常表示一个库,它可以使用,也可以有依赖关系,也可以没有依赖关系。
但是这个想法是,一个特定的功能可以作为一个库在jar中提供。
war本身就是一个应用程序,因此它应该包括所有的依赖项。
发布于 2012-03-15 16:27:08
它们是有不同用途的容器。
Jar用于Java类文件和资源,可以是库或直接运行的应用程序。War是一个容器,用于打包完整的 web 应用程序,包括所有依赖项(例如Jar文件和其他web资源)。问题归结为,为什么jar不能包括其他jar,我认为这是一个设计决策,以便在交换依赖项时允许最大程度的灵活性。
发布于 2012-03-15 16:27:46
WAR文件(主要是WEB应用程序)是未压缩的,库文件夹中的所有JAR文件在运行时都将位于web应用程序的类路径中。
JAR文件也可能包含jar文件,但是默认的类加载程序不会找到并加载jar文件。
有一些特殊的类加载器可以在jar文件中加载jar文件,但不是标准的。
https://stackoverflow.com/questions/9723888
复制相似问题