打包方式-jar和war的区别

1、jar包

JAR包是类的归档文件 ,与平台无关的文件格式,其实jar包就是java的类进行编译生成的class文件进行打包的压缩包。

JAR以ZIP文件格式为基础,与ZIP不同的是,JAR不仅用于压缩和发布,还用于部署和封装库、组件和插件程序,可以被编译器和JVM直接使用。可以将这些jar包引入到自己的项目中,可以直接使用这些jar包中的类和属性,这些jar包一般放在lib目录下。

2、war包

war包是JavaWeb程序打的包 ,是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。里面包含我们web程序需要的一些东西,其中包括web.xml的配置文件,前端的页面文件,以及依赖的jar。

以tomcat为例,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。

3、区别

3.1 从概念上理解
  • JAR包是类的归档文件
  • war包是JavaWeb程序打的包。
3.2 从解压后的目录结构看
  • jar包:
  • ①jar包里的com里放的就是class文件
    ②配置文件,但是没有静态资源的文件
    ③大多数 JAR 文件包含一个 META-INF 目录,它用于存储包和扩展的配置数据,如安全性和版本信息
  • war包
  • ①WEB-INF里放的class文件和配置文件
    ②META-INF和jar包作用一样
    ③war包里还包含静态资源的文件
3.3 总结
  1. war包和项目的文件结构保持一致,jar包则不一样
  2. jar包里没有静态资源的文件(index.jsp)
  3. 一个web应用程序的目录和文件很多,想要将这个web应用程序部署到另一台机器上就很麻烦,这时可以将web应用程序打包成WAR文件,利用这个文件可以把servlet类文件和相关的资源集中在一起进行发布。这个过程中,web应用程序就不是按照目录层次结构惊醒部署的,而是把WAR文件作为部署单元来使用。一个WAR文件就是一个web应用程序,建立WAR文件就是把整个web应用程序压缩起来,指定一个.war扩展名。
  4. 虽然WAR文件和JAR文件的文件格式是一样的,并且都是使用jar命令来创建,但就其应用来说,WAR文件和JAR文件是有根本区别的。JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件
  5. 部署普通的spring项目用war包就可以,部署springboot项目用jar包就可以,因为springboot内置tomcat
相关推荐
凤山老林4 小时前
SpringBoot实战:构建优雅的全局异常处理机制
java·springboot·异常处理
BullSmall4 小时前
Tomcat 部署 Jenkins → Docker Jenkins 完整迁移方案
docker·tomcat·jenkins
小Ti客栈4 小时前
Spring Boot 整合 Swagger2 和 Knife4j实现接口文档与可视化调试
java·spring boot·后端
梅头脑4 小时前
ThreadLocalMap里几十万个死Entry——排查了半天OOM,根因就一行finally没写
java
2601_963870175 小时前
【计算机毕业设计】基于Spring Boot的社区老年大学课程报名与学习系统的设计与实现
java·spring boot·学习
llwszx5 小时前
【Java/Go后端手撸原生Agent(第七篇):Token预算管理 + 滑动窗口上下文裁剪】
java·后端·python·agent开发·上下文工程·上下文裁剪·滑动窗口裁剪
weixin_BYSJ19876 小时前
springboot3家政平台小程序--附源码00904
java·javascript·spring boot·python·django·flask·php
凤山老林6 小时前
SpringBoot 3 启用 spring.factories 后如何升级替换原有的 spring.factories ?
spring boot·后端·spring
梦幻通灵6 小时前
Java中finally失效的几种情况【持续更新】
java·开发语言
月落归舟6 小时前
SpringMVC 多种响应返回方式
java·开发语言