Java中jar和war的区别

580

.jar.war文件有什么区别?
是只有文件扩展名不同还是还有其他的区别呢?

15个回答

475

来自Java技巧:ear和jar文件的区别

这些文件只是使用Java jar工具进行压缩的文件。这些文件被创建用于不同的目的。以下是这些文件的描述:

  • .jar文件: .jar文件包含库、资源和附件文件,如属性文件。

  • .war文件: war文件包含可部署在任何servlet/jsp容器上的Web应用程序。.war文件包含jsp、html、javascript和其他开发Web应用程序所必需的文件。


官方Sun/Oracle描述:


维基百科文章:


17
我有一个疑问,为什么JSP和其他Web应用程序文件不能在JAR文件中? - Emmanuel Angelo.R
2
@EmmanuelAngelo.R 他们可以 - 一个jar文件只是一个zip文件。它是否有用取决于您想要利用jar文件的代码。有趣的是,Jenkins持续集成服务器被分发为WAR文件,可以使用“java -jar”运行。有关详细信息,请参见https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins。 - Thorbjørn Ravn Andersen

143

WARWeb应用程序存档的缩写。

JARJava存档的缩写。

输入图像描述


25
EAR是企业级应用程序归档文件的缩写。 - funder7
4
好的插图! - Matilda Smeds

102
.war 文件 在某些文件位置上有特定结构。除此之外,它与 .jar 文件相同。

47
你可以把Web组件添加到J2EE应用程序中,打包成一个名为Web应用程序存档(WAR)的包,这是类似于Java类库所使用的包的JAR文件。一个WAR通常包含除Web组件之外的其他资源,包括:
  • 服务器端实用类(数据库bean、购物车等)。
  • 静态Web资源(HTML、图像和声音文件等)
  • 客户端类(小应用程序和实用程序类)
WAR具有特定的分层目录结构。WAR的顶级目录是应用程序的文档根目录。文档根目录是存储JSP页面、客户端类和存档以及静态Web资源的位置。 (来源)
因此,.war是.jar,但它包含Web应用程序组件,并按照特定的结构布局。.war旨在部署到Web应用程序服务器,如Tomcat或Jetty,或Java EE服务器,如JBoss或Glassfish。

1
这是否意味着,如果您正在构建一个仅使用套接字而没有任何用户界面的服务器应用程序,就不需要将其打包为war文件? - mal
其实现在我读得更多了,我不需要Tomcat了,我可以直接将jar文件导出到服务器上并从那里直接运行。 - mal

24

.war 文件是指运行在应用服务器中的 Web 应用程序归档文件,而 .jar 是 Java 应用程序归档文件,可在用户计算机上运行桌面应用程序。


25
第二个陈述并不一定正确。一个 "jar" 文件也可以启动一个嵌入式 Web 服务器,例如使用 Spring Boot。 - whirlwin
6
即使这个说法不完全正确,一个“jar”文件也可以仅仅是一个库文件,被其他应用程序调用使用。换句话说,它可能不包含可以运行的主类。 - Kevin Welker
@KevinWelker同意。即使在2011年(本帖发布时),jar仍然只能代表一个库。然而,Spring Boot还没有出现,所以我可以理解忽略了像旋风一样将Web服务器嵌入jar的事实。 - intrepistar_88
@Kevin Welker,不是“不完全”,我会说“不是全部真相”,因为whirlwin刚刚提到了一个例外,这个例外是完全正确的,不是吗? - Alex Martian

13

war文件是一种特殊的jar文件,用于打包Web应用程序并使其易于在应用服务器上部署。 war文件的内容必须遵循定义好的结构。


12

.jar和.war都是被压缩的存档文件。 两者都可以包含META-INF/MANIFEST.MF清单文件,其中包含版本信息、类路径和主类等指示属性,以供JVM执行。

.war文件 - Web应用程序归档文件,旨在在'Servlet容器'内执行,并可能包括其他jar文件(位于WEB-INF/lib目录下)、编译的类(位于WEB-INF/classes),.jsp文件,图片,文件等。 所有WAR内容都是为了创建一个自包含的模块。


8

war和jar是Java文件的存档。war是Web归档文件,它们在Web服务器上运行。jar是Java归档文件。


7

JAR文件扩展名为.jar,使用jar命令从命令提示符(类似于执行javac命令)创建。通常,JAR文件包含Java相关资源,如库、类等。JAR文件类似于winzip文件,但是JAR文件是平台无关的。

WAR文件只是一个JAR文件,但仅包含与Web有关的Java文件,如Servlets、JSP、HTML。

要执行WAR文件,需要Web服务器或Web容器,例如Tomcat、Weblogic或Websphere。要执行JAR文件,只需简单的JDK即可。


5
基本上都是压缩存档。war 用于具有特定目录结构的 Web 应用程序。

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