Java中jar和war的区别


462

.jar.war文件之间有什么区别?
仅仅是文件扩展名还是更多?

Answers:


387

来自Java的技巧:耳罩和war文件之间的区别

这些文件只是使用java jar工具压缩的文件。这些文件是为不同目的而创建的。这是这些文件的描述:

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

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


Sun / Oracle的官方描述:


维基百科文章:


10
作为jsp和其他Web应用程序文件有疑问,为什么不能放在jar文件中。
伊曼纽尔·安杰洛

@ EmmanuelAngelo.R他们可以-jar文件只是一个zip文件。如果它将做有用的事情,则是另一回事,这取决于您要利用jar文件的代码。作为一个有趣的示例,Jenkins Continuous Integration服务器作为WAR文件分发,可以使用“ java -jar”运行。有关详细信息,请参见wiki.jenkins-ci.org/display/JENKINS/…
托尔比约恩Ravn的安德森


40

您可以在称为Web应用程序归档文件(WAR)的程序包中将Web组件添加到J2EE应用程序,该程序包是一个JAR,类似于用于Java类库的程序包。WAR通常包含Web组件以外的其他资源,包括:

  • 服务器端实用程序类(数据库Bean,购物车等)。
  • 静态Web资源(HTML,图像和声音文件等)
  • 客户端类(applet和实用程序类)

WAR具有特定的分层目录结构。WAR的顶级目录是应用程序的文档根目录。文档根目录是JSP页面,客户端类和归档文件以及静态Web资源的存储位置。

来源

因此,.war是.jar,但它包含Web应用程序组件,并根据特定结构进行布局。.war被设计为部署到Web应用程序服务器(例如Tomcat或Jetty)或Java EE服务器(例如JBoss或Glassfish)。


1
这是否意味着如果您要构建仅使用套接字且没有任何UI的服务器应用程序,则无需将其打包为war文件?
bot_bot 2015年

实际上,现在我正在阅读更多内容,不需要Tomcat,我可以将jar导出到服务器并直接从那里运行。
bot_bot 2015年


15

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


13
第二个陈述不一定正确。jar也可以启动嵌入式Web服务器,例如使用Spring Boot。
whirlwin

4
即使那个陈述也不是完全正确的。jar也可以只是其他应用程序要使用的代码库。换句话说,它甚至可能不包含要运行的主类。
凯文·韦尔克

@KevinWelker同意。即使在2011年(撰写本文时),一个罐子仍然可以代表一个图书馆。但是,Spring Boot并没有出现,因此我可以忽略一个事实,即您可以将Web服务器嵌入提到的whirlwind这样的jar中。
intrepistar_88 '18

@Kevin Welker,不是“不是全部”,我会说“不是所有事实”,因为whirlwin提到了一个完全正确的例外,不是吗?
阿列克谢·马蒂安诺夫


10

.jar和.war都是压缩的存档文件。两者都可以具有可选的META-INF / MANIFEST.MF清单文件,该清单文件包含诸如版本控制之类的信息,以及诸如将要执行它的JVM的说明性属性(如classpath和main-class)。

.war文件-旨在在“ Servlet容器”内执行的Web应用程序存档,并且可能包括其他jar文件(在WEB-INF / lib目录中)已编译的类(在WEB-INF / classes(servlet也在那里)).jsp文件图像,文件等。所有WAR内容都存在,以便创建一个独立的模块。


5

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


4

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


1

战争-

分发基于Java的Web应用程序。WAR与JAR文件具有相同的文件结构,JAR文件是一个压缩文件,其中包含捆绑在一起的多个文件。

罐子-

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

WAR文件用于组合JSP,servlet,Java类文件,XML文件,javascript库,JAR库,静态网页以及运行该应用程序所需的任何其他资源。


0

Jar:-jar仅包含.class war:-war 包含html,js,css和.class以及jsp和servlets页面


0

JAR文件允许打包多个文件,以便将其用作库,插件或任何类型的应用程序。另一方面,WAR文件仅用于Web应用程序。

可以使用任何所需的结构来创建JAR。相反,WAR具有带有WEB-INF和META-INF目录的预定义结构。

JAR文件允许Java运行时环境(JRE)在单个请求中部署包括类和相关资源的整个应用程序。另一方面,WAR文件允许轻松测试和部署Web应用程序。


0

JAR文件扩展名为.jar,是从命令提示符下使用jar命令创建的(例如执行了javac命令)。通常,JAR文件包含与Java相关的资源,例如库,类等.JAR文件类似于winzip文件,不同之处在于Jar文件与平台无关。

WAR文件只是JAR文件,但仅包含与Web相关的Java文件,例如Servlet,JSP,HTML。

要执行WAR文件,需要Web服务器或Web容器,例如Tomcat或Weblogic或Websphere。要执行一个JAR文件,简单的JDK就足够了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.