当前位置: 首页 > news >正文

打包方式-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

 

 

相关文章:

打包方式-jar和war的区别

1、jar包 JAR包是类的归档文件,与平台无关的文件格式,其实jar包就是java的类进行编译生成的class文件进行打包的压缩包。 JAR以ZIP文件格式为基础,与ZIP不同的是,JAR不仅用于压缩和发布,还用于部署和封装库、组件和插…...

【论文+源码】基于spring boot的垃圾分类网站

创建一个基于Spring Boot的垃圾分类网站涉及多个步骤,包括环境搭建、项目创建、数据库设计、后端服务开发、前端页面设计等。下面我将引导您完成这个过程。 第一步:准备环境 确保您的开发环境中安装了以下工具: Java JDK 8 或更高版本Mav…...

【C++ STL 模板类】pair 键值对

文章目录 【 1. pair 对象的创建 】【 2. pair 对象的赋值 】【 3. pair 对象的比较 】【 4. pair对象成员的互换】 C STL 标准库提供了 pair 类模板,专门用来将 2 个普通元素 first 和 second(可以是 C 基本数据类型、结构体、类自定的类型)…...

paddleocr使用FastDeploy 部署工具部署 rknn 模型

在 PC 端转换 pdmodel 模型为 rknn 模型和在板端使用百度飞浆开发的 FastDeploy 部署工具部署 rknn 模型 以下内容是在 PC 端系统为 Ubuntu20.04,板端系统为ubuntu20.04 的环境下实现的 描述: 官网地址 rknn_zoo RKNPU2_SDK …...

Apple Vision Pro市场表现分析:IDC最新数据揭示的真相

随着AR/VR技术逐渐成熟并被更多消费者接受,2024年第二季度(Q2)成为这一领域的一个重要转折点。根据国际数据公司(IDC)发布的最新报告,整个AR/VR市场在本季度经历了显著的增长。接下来,我们将深入探讨Apple Vision Pro在这股增长浪潮中的具体表现。 市场背景 2024年Q2,…...

Mybatis-04.入门-JDBC

一.JDBC 二.原始的JDBC程序代码 (不做要求) Test public void testJdbc() throws Exception {//1. 注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2. 获取连接对象String url "jdbc:mysql://localhost:3306/mybatis";Str…...

拥抱云开发的未来:腾讯云数据库、云模板与AI智能化的应用场景探索

本文目录: 💡前言:技术的边界在不断延展🌟目录🌈什么是腾讯云云开发?💾云数据库:让数据成为开发的稳固基石🥑数据,不再只是数据 🛠云模板&#xf…...

新手铲屎官求推荐,噪音低的宠物空气净化器应该用哪款

当初选择养橘猫就是因为我听到有人说橘猫不容易掉毛才养的,谁知道养了之后和传闻中的不一样,真正的让我明白了什么叫“眼见为实”。 主要是猫掉毛就掉毛,只要我能清理的我都会清理,只要能保证养猫的同时还能保持家里卫生干净就行…...

玄机平台-应急响应-webshell查杀

首先xshell连接 然后进入/var/www/html目录中,将文件变成压缩包 cd /var/www/html tar -czvf web.tar.gz ./* 开启一个http.server服务,将文件下载到本地 python3 -m http.server 放在D盾中检测 基本可以确认木马文件就是这四个 /var/www/html/shell.p…...

LeetCode Hot 100:图论

LeetCode Hot 100&#xff1a;图论 200. 岛屿数量 思路 1&#xff1a;深度优先搜索 class Solution { private:const int dx[4] {-1, 0, 1, 0};const int dy[4] {0, 1, 0, -1};public:int numIslands(vector<vector<char>>& grid) {if (grid.empty())retu…...

tracert和ping的区别

1、简介 tracert&#xff08;在 Windows 系统中&#xff09;和 traceroute&#xff08;在 Unix/Linux 系统中&#xff09;以及 ping 都是网络诊断工具&#xff0c;但它们的功能和用途有所不同&#xff1a; ping&#xff1a; 用途&#xff1a;ping 是一个网络工具&…...

回归、分类模型的评估指标

1. 分类模型的评估指标 评估机器学习模型的好坏至关重要&#xff0c;它帮助我们判断模型的性能、稳定性以及在实际问题中的应用效果。不同类型的机器学习任务&#xff08;分类、回归、聚类等&#xff09;有不同的评估指标。以下是详细介绍常见的模型评估指标&#xff0c;尤其针…...

k8s中如何将pod的标准输出日志输出到一个文件

假设容器的启动命令是 grpcserver&#xff0c;我们将通过修改启动命令&#xff0c;将 grpcserver 的标准输出重定向到指定的日志文件 /var/log/app/grpcserver.log&#xff0c;同时保留标准输出以便 Kubernetes 日志系统仍然能够捕获日志。 目标&#xff1a; 将 grpcserver 的…...

软件工程文档规范要点总结

需求分析文档 1.目标用户应该体现为用例图里的执行者&#xff08;执行者要标明是哪一类用户&#xff09; 2.用例模型由功能概述得到&#xff0c;用例顺序图由基本交互过程得到&#xff0c;分析类图由顺序图得到 3.执行者和用例之间的关系&#xff1a;执行、触发、驱动 用例…...

Django 序列化serializers

在Django中&#xff0c;序列化通常指的是将数据库中的模型数据转换为JSON、XML或其他格式的过程。Django提供了内置的序列化工具&#xff0c;可以通过django.core.serializers模块进行序列化操作。 当你使用Django的序列化功能时&#xff0c;可以序列化以下两种对象类型&#…...

混个1024勋章

一眨眼毕业工作已经一年了&#xff0c;偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候&#xff0c;本来以为自己这一年没学到多少东西&#xff0c;但是看看自己的博客其实也有在进步&#xff0c;虽然比不上博客里的众多大佬&#xff0c;但是回头看也算是自己的…...

Java Spring Boot 项目开发示例指南

开发和扩展一个 Java Spring Boot 项目可以分为几个步骤。以下是一个简单的指南&#xff0c;涵盖项目的创建、基本功能的实现、以及扩展的示例。 第一步&#xff1a;创建 Spring Boot 项目 使用 Spring Initializr 创建项目: 访问 Spring Initializr选择项目的配置&#xff08…...

Python学习路线:从新手到专家

引言 Python 是一种高级编程语言&#xff0c;以其简洁清晰的语法而闻名&#xff0c;被广泛应用于Web开发、数据科学、人工智能、自动化脚本等领域。无论你是编程初学者还是有经验的开发者&#xff0c;Python 都是一个值得学习的语言。本文将提供一份详细的Python学习路线图&am…...

R实验——logistic回归、LDA、QDAKNN

数据集介绍&#xff1a; mpg&#xff0c;miles per gallon即油耗&#xff0c;这个数据集来自卡内基梅隆大学维护的StatLib库。1983年美国统计协会博览会使用了该数据集。这个数据集是对StatLib库中提供的数据集稍加修改的版本。根据Ross Quinlan(1993)在预测属性“mpg”中的使…...

Java 使用 itextpdf 自定义 生成 pdf

Java 使用 itextpdf 自定义 生成 pdf maven 依赖实现docker 服务 字体文件找不到问题 maven 依赖 <!-- iText 7 --> <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.3</version…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

数据分析六部曲?

引言 上一章我们说到了数据分析六部曲&#xff0c;何谓六部曲呢&#xff1f; 其实啊&#xff0c;数据分析没那么难&#xff0c;只要掌握了下面这六个步骤&#xff0c;也就是数据分析六部曲&#xff0c;就算你是个啥都不懂的小白&#xff0c;也能慢慢上手做数据分析啦。 第一…...