jar包详解_jar包结构详解-程序员宅基地

技术标签: java  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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq1309664161/article/details/118292710

智能推荐

WeUI实例(官方)_weui在线演示-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏3次。博主最近想用小程序画几个页面,于是想试试WeUI的样式。但是没找到WeUI的文档,只找到了在线的实例演示。还有的例子是在div上显示的,当时比较疑惑。后来发现,可能是公众号的页面。实例演示的链接:传送门其实这些实例的代码我们在github下载WeUI的时候已经clone到本地了。在这个位置:example文件夹存放了实例的源码,你可以参考这个来使用WeUI,还是很有意思的。不过不要忘记引..._weui在线演示

1.74HC138控制LED发光_74h138-程序员宅基地

文章浏览阅读2.2k次。74HC138 三八译码器的应用三八译码器,就是把 3 种输入状态翻译成 8 种输出状态。从图所能看出来的74HC138 有 1~6 一共是 6 个输入引脚,但是其中 4、5\6 这三个引脚是使能引脚。使能引脚和我们前边讲 74HC245 的 OE 引脚是一样的,这三个引脚如果不符合规定的输入要求,Y0 到 Y7 不管你输入的 1、2、3 引脚是什么电平状态,总是高电平。_74h138

使用 webpack 打包 ts 代码_使用webpack打包工具,完成项目project的打包,该项目中含有index.ts文件,inde-程序员宅基地

文章浏览阅读1.3k次。使用 webpack 打包 ts 代码_使用webpack打包工具,完成项目project的打包,该项目中含有index.ts文件,index.htm

em和rem-程序员宅基地

文章浏览阅读143次。em和rem都是相对单位,由浏览器转换为像素值,具体取决于设计中的字体大小设置。1em或者1rem会被浏览器解析成从16px到160px或者其他任意值。em和rem单位之间的区别是浏览器根据谁来转化成px值的。1.emem是相对于被设置元素的font-size的倍数的单位,如图:class sixteen的font-size为16px,则padding:1em..._10em和10rem单位区别

2015年腾讯暑期实习面试_腾讯产品暑期实习面试是当天面试完还是面几天-程序员宅基地

文章浏览阅读1.9k次。大3下学期,是时候考虑暑期实习的问题了。对于IT男来说,进BAT实习是梦寐以求的。 我们学院的传统是能自己找到暑期实习,就能免去暑假在9#的10天强制性实习。 以前的学长学姐,有去百度,去哪网实习的。我也从3月份就开始,跟着实验室的一群哥们找实习,有内推的机会就好好准备面试。正文从这里开始 !-) 4月份初,参加鹅厂的在线笔试,题目大多是设计网络、数据结构和系统等_腾讯产品暑期实习面试是当天面试完还是面几天

计算机英语词汇_pressesctocontinue怎么解决-程序员宅基地

文章浏览阅读1.1k次,点赞11次,收藏41次。计算机英语词汇CPU(Center Processor Unit)中央处理单元 mainboard主板 RAM(random access memory)随机存储器(内存) ROM(Read Only Memory)只读存储器 Floppy Disk软盘 Hard Disk硬盘 CD-ROM光盘驱动器(光驱) moni_pressesctocontinue怎么解决

随便推点

google guice hello world_guice hellow world-程序员宅基地

文章浏览阅读463次。Guice是一个轻量级的Java依赖注入(DI)框架。使用依赖注入有很多优点,但是手动操作常常会导致编写大量样板代码。Guice是一个框架,用于编写使用依赖注入的代码,而不需要编写大量样板代码,有关动机的更多细节,请参阅本页面。简单地说,Guice减少了对工厂的需求和Java代码中new的使用。把Guice的@Inject看作是新的。在某些情况下,您仍然需要编写工厂,但是您的代码不会直接依赖于..._guice hellow world

计算机老师用英语表达PE,pe teacher是什么意思-程序员宅基地

文章浏览阅读3.4k次。1. I don't want to have the listening class, so I put the big earphone while the volume is zero; I have no desire to have the oral English class, so I must be the one who doesn't preview the task; I c..._pe老师

Spring Boot整合swagger2(生成有左右菜单式的api文档界面)_java swagger 左右布局-程序员宅基地

文章浏览阅读1k次。一、pom.xml内容:<!--=====依赖swagger2 zhongzk 2019.7.7 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version&..._java swagger 左右布局

Gson解析json字符串-程序员宅基地

文章浏览阅读294次。// 解析传递过来的json字符串JsonParser parser = new JsonParser();JsonObject jsonObj = parser.parse(strJson).getAsJsonObject(); Map<String, Object> map = new HashMap<String, Object&..._gson 解析字符串

什么是人工智能?_strangled snakes beside that of hercules翻译-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏7次。Extinguished philosophies lie about the cradle of every science as the     strangled snakes beside that of Hercules. - adapted from T. H. Huxley                                               WHAT IS A_strangled snakes beside that of hercules翻译

hdu3342 Legal or Not---拓扑排序_codeup legal or not 邻接矩阵-程序员宅基地

文章浏览阅读970次。1、所有in=0的都拿出去了,但vis还不全为0,则一定有环拓扑排序:用邻接表存储比较方便1、找到一个入度为0的点,删除它,它的所有后继结点入度-12、重复1知道没有入度为0的点存在,这时所有删除的顶点构成一个全序关系。#include #include #include #include #include #include #include #inc_codeup legal or not 邻接矩阵