打包:JAR、EAR、WAR
war 是一个 Web 模块,其中需要包括 WEB-INF,是可以直接运行的 WEB 模块。而 jar 一般只是包括一些 class 文件,在声明了 main_class 之后是可以用 java 命令运行的。
它们都是压缩的包,拿 Tomcat 来说,将 war 文件包放置它的 \webapps\ 目录下,启动 Tomcat,这个包可以自动进行解压,也就是你的 web 目录,相当于发布了。
war包:是做好一个 Web 应用后,通常是网站,打成包部署到容器中。jar包:通常是开发时要引用通用类,打成包便于存放管理。ear包:企业级应用,通常是 EJB 打成ear包。
所有的包都是用 jar 打的,只不过目标文件的扩展名不一样。
WAR 是 Sun 提出的一种 Web 应用程序格式,与 JAR 类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有 Html 和 Jsp 文件或者包含这两种文件的目录,另外还会有一个 WEB-INF 目录,这个目录很重要。通常在 WEB-INF 目录下有一个 web.xml 文件和一个 classes 目录,web.xml 是这个应用的配置文件,而 classes 目录下则包含编译好的 Servlet 类和 Jsp 或 Servlet 所依赖的其它类(如 JavaBean)。通常这些所依赖的类也可以打包成 JAR 放到 WEB-INF 下的 lib 目录下,当然也可以放到系统的 CLASSPATH 中,但那样移植和管理起来不方便。
JAR、WAR、EAR 在文件结构上,三者并没有什么不同,它们都采用 zip 或 jar 文件压缩格式。但是它们的使用目的有所区别:
| | | | |
|---|---|---|---|
| 英文 | | | |
| 包含内容 | class、properties 文件,是文件封装的最小单元;包含 Java 类的普通库、资源(resources)、辅助文件(auxiliary files)等 | Servlet、JSP 页面、JSP 标记库、JAR 库文件、HTML / XML 文档和其他公用资源文件,如图片、音频文件等 | 除了包含 JAR、WAR 以外,还包括 EJB 组件 |
| 部署文件 | application-client.xml | web.xml | application.xml |
| 容器 | Application Servers) | Servlet Containers) | EJB Containers) |
| 级别 | | | |
- Jar 文件(扩展名为
.jar,Java Application Archive)包含 Java 类的普通库、资源(resources)、辅助文件(auxiliary files)等。 - War 文件(扩展名为
.war,Web Application Archive)包含全部 Web 应用程序。在这种情形下,一个 Web 应用程序被定义为单独的一组文件、类和资源,用户可以对jar文件进行封装,并把它作为小型服务程序(servlet)来访问。 - Ear 文件(扩展名为
.ear,Enterprise Application Archive)包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和 Web 应用程序的集合。
每一种文件(.jar,.war,.ear)只能由 应用服务器(Application Servers)、小型服务程序容器(Servlet Containers)、EJB 容器(EJB Containers)等进行处理。
EAR 文件包括整个项目,内含多个 EJB Module(jar 文件)和 WEB Module(war 文件)。EAR 文件的生成可以使用 winrar zip 压缩方式或者 jar 命令。

步骤:
先打包成 war 和 jar,并写好 application.xml,放到 META-INF 目录下,然后 jar cf your_application.ear your_war.war your_jar.jar META-INF/application.xml, 打包,我这假设都在当前目录下,可以用 jar xf your_application.ear 解压
WAR的使用:
- 如果想生成
war文件:可以使用如下命令:jar -cvf web1.war * - 如果想查看
web1.war中都有哪些文件,可以使用命令:jar -tf web1.war - 如果想直接解压
web1.war文件,可以使用命令:jar -xvf web1.war - 另外,也可使用
winrar软件选择zip压缩方式,并将压缩文件后缀名改为war即可压缩生成war文件;同样使用winrar软件可以强行打开war文件,或者强行解压war文件。 - 使用
jar命令与winrar软件的区别在于前者在压缩文件的同时会生成Meta-INF文件夹,内包含MANIFEST.MF文件。
总结:
何时使用 war 或者 jar 文件:当你的项目在没有完全竣工的时候,不适合使用 war 文件,因为你的类会由于调试之类的经常改,这样来回删除、创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 war 包吧,这个时候一个 war 文件就相当于一个 web 应用程序了;而 jar 文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。