才子佳人博客

我的故事我讲述

Java jar包 和 war包 的区别
 
来源:blog.csdn.net  编辑:xjh  2025-06-24

在 Java 开发里,JAR(Java Archive)包和 WAR(Web Application Archive)包都是常用的归档文件格式,不过它们的用途、结构和部署方式存在差异。下面详细介绍它们的区别。

一、用途

JAR 包:主要用于打包 Java 类文件、资源文件以及元数据等,可作为库文件供其他 Java 项目使用。很多开源的 Java 框架和类库,像 Apache Commons、Guava 等,都会以 JAR 包的形式发布。

WAR 包:专门用于打包 Web 应用程序,包含了构成 Web 应用的所有文件,例如 JSP(JavaServer Pages)文件、Servlet、HTML、CSS、JavaScript 以及相关的配置文件等。

二、文件结构

JAR 包:其根目录下主要包含 .class 文件、资源文件(如 .properties 文件)和 META-INF 目录。META-INF 目录里通常包含 MANIFEST.MF 文件,该文件用于指定 JAR 包的元数据,例如主类信息等。以下是一个简单的 JAR 包结构示例:

example.jar
├── com
│   └── example
│       └── MyClass.class
├── resources
│   └── config.properties
└── META-INF
    └── MANIFEST.MF

WAR 包:结构更为复杂,它遵循特定的 Web 应用程序目录结构。根目录下一般有 WEB-INF 目录、静态资源目录(如 html、css、js 等)。WEB-INF 目录包含 web.xml(Web 应用的配置文件)、classes 目录(存放 Java 类文件)和 lib 目录(存放依赖的 JAR 包)。示例结构如下:

example.war
├── index.html
├── css
│   └── style.css
├── js
│   └── script.js
└── WEB-INF
    ├── web.xml
    ├── classes
    │   └── com
    │       └── example
    │           └── MyServlet.class
    └── lib
        └── dependency.jar

三、部署方式

JAR 包:作为库文件使用时,可将其添加到项目的类路径中。在 Maven 项目里,可在 pom.xml 文件中添加依赖;在 Gradle 项目中,则在 build.gradle 文件里添加依赖。

若 JAR 包包含可执行的主类,可通过 java -jar 命令来运行。例如:java -jar example.jar。

WAR 包:需部署到支持 Java Web 应用的服务器上,像 Apache Tomcat、Jetty 等。部署时,通常将 WAR 包复制到服务器的指定部署目录(如 Tomcat 的 webapps 目录),服务器会自动解压并启动应用。

四、应用场景

JAR 包:适用于封装可复用的 Java 代码,供不同的项目共享使用。比如,开发一个工具类库,将其打包成 JAR 包后,其他项目就可以方便地引入使用。

WAR 包:主要用于部署完整的 Web 应用程序。当开发一个 Web 项目完成后,将其打包成 WAR 包,然后部署到服务器上,用户就可以通过浏览器访问该应用。

综上所述,JAR 包和 WAR 包在用途、结构、部署方式和应用场景上都有所不同,开发者需要根据具体需求选择合适的打包方式。

原文链接:https://blog.csdn.net/wkj001/article/details/147473992

分类:编程开发| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: