jar包、war包知识梳理

本文深入解析JAR文件格式,包括其作为Java归档文件的角色、如何创建与使用,以及在JDK环境变量配置中的作用。同时,文章还介绍了如何通过MANIFEST.MF文件指定程序入口类和依赖的类路径,最后探讨了JAR与WAR包的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jar

1. jar文件
jar文件(java归档 javaARchive)是一种软件包文件格式,它是java所特有的一种压缩文档,可以简单理解成.zip文件;通常用于聚合大量的java类文件、元数据和资源文件到一个文件,以便于java平台应用软件或库;jar文件是以zip格式进行构建的,用户可以使用JDK自带的jar命令来创建或提前jar文件;jar包中包含的是.class文件,jvm在加载jar包中的类的时候,会自动解压这个jar文件,然后将引用的类加载到虚拟机中.
2.jdk环境变量中的jar
dt.jar: 在{JAVA_HOME}/lib目录下,是java运行环境相关的类库,主要是swing的包
tools.jar:{JAVA_HOME}/lib目录下,是java的工具类库,编译(javac)和运行(java)都需要用到其中的类
rt.jar: 在 jre/lib目录下,是java的基础类库,例如String等基础类就在rt.jar中,它默认就在root classload的加载路径里面,因此不需要在配置classpath时配置它的路径
3. 配置jdk环境变量的作用

  1. PATH: 作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序,我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,这样我们就能在任意目录下执行java/javac命令
  2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,jvm中的类加载器就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
  3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

3. jar命令的使用(uinux终端使用jar命令)

jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...
 
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
 
-c  创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v  生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
复制代码

1 使用vim 编写java类 HelloJar.java
2 编译:javac -d . HelloJar.java 得到HelloJar.class文件
3 使用vim 创建MANIFEST.MF文件,jar文件中指定了一个META-INF目录来存放MANIFEST.MF文件,它包含了jar文件的内容描述,并在运行时向jvm提供程序的信。它的主要属性有

main-class : 程序入口类,jar包的启动类  
class-path : 依赖的其它jar包 
复制代码

4 在创建的MANIFEST.MF文件中添加: main-class : HelloJar
5 配置jar包中的MANIFEST.MF文件:

命令:jar cvmf MANIFEST.MF HelloJar.jar HelloJar.class 
复制代码

6 运行jar文件: java - jar HelloJar.jar 即可输出启动类的内容。
7 补充:如果有引用其它jar包,需要在MANIFEST.MF的class-path属性中配置

4. web项目jar形式运行

  1. 将项目的jar包上传到linux服务器上
  2. 运行jar文件并让其不间断地运行
nohup java -jar [projectName.jar]
复制代码
  1. 上述命令会将输出追加到一个当前目录下的nohup.out文件中,此文件中存放的是tomcat的启动日志

war包
war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。

参考博文:

  1. blog.youkuaiyun.com/sinat_38371…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值