jar包详解

1.可运行jar包和普通jar包及目录结构

可运行jar包是打jar包时,指定了main-class类,可以通过java -jar xxx.jar 命令,执行main-class的main方法,运行jar包。可运行jar包不可被其他项目进行依赖。

普通jar包打包时,不用指定main-class,也不可运行。普通jar包可以供其它项目进行依赖。
jar包的配置文件是META-INF文件夹下的MANIFEST.MF文件。里面配置了如下信息:
Manifest-Version
用来定义manifest文件的版本,例如:Manifest-Version: 1.0
Created-By
声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
Signature-Version
定义jar文件的签名版本
Class-Path
应用程序或者类装载器使用该值来构建内部的类搜索路径,可执行jar包里需要设置这个。

上面是普通jar包的属性,可运行jar包的.MF文件中,还会有mian-class或start-class等属性。如果依赖了外部jar包,还会在MF文件中配置lib路径等信息。

至于可运行jar包和普通jar包的目录结构,没有什么特别固定的模式,总之,无论是什么结构,在.MF文件中,配置好jar包的信息,即可正常使用jar包了。

2.如何打两种jar包

JDK提供了打jar包的命令,但是使用原生命令比较复杂,我们一般使用工具进行打包。下面讲解idea如何打jar包。
File–>Project Structure–>Artifacts–>添加jar包:
在这里插入图片描述
对于普通jar包,无需指定mianclass,对于可运行jar包,需要指定mainclass,然后进行打包使用。

3.war包的目录结构

可运行jar包里的代码,copy到war包中,在tomcat发布,可以使用吗?怀着这个疑问,我做了测试,发现不行。顺便贴出war包的目录结构,以便区分:

在这里插入图片描述

4.SpringBoot打成的jar包

SpringBoot项目打成可运行jar包,还可以打成普通jar包,供其它项目依赖。打成的普通jar包,是以orignal结尾的,去掉这个后缀形成的jar包,就是普通jar包。下面看一下SpringBoot形成的jar包结构和.MF文件:
在这里插入图片描述代码都在BOOT-INF下,如:
在这里插入图片描述
.MF文件配置如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Administrator
Start-Class: xxx.xxx.xxx
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.1.1.RELEASE
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_31
Main-Class: org.springframework.boot.loader.JarLauncher

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的小小酥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值