关于 jar包和 打jar包

 


1.什么是 jar包?

    Java Archive File(Java档案[归档]文件)
    jar文件是基于zip文件格式的压缩包,用于将多个class文件聚合一个文件
    jar文件的本质就是一个 zip文件
    jar文件 包含了 class文件和一个可选的META-INF目录

2.为什么 要打jar包?

    jar文件 不仅仅是将 class文件或者资源文件 的简单打包,
        常被用来做 应用程序(部署)和扩展模块(依赖包)

3.jar包 的内部结构?

复制代码

//1.class文件
path1/path2/*.class
//2.META-INF目录 用于存储包和扩展配置数据,包括安全性、版本控制、扩展和服务
META-INF(可选)
META-INF/maven/相关
META-INF/MANIFEST.MF
//3.其他配置文件(按需配置)
dbInfo.properties
hdfs-site.xml
hive-site.xml
log4j.properties
复制代码

4.关于 MANIFEST.MF

复制代码
    1. 用途
        jar的元数据配置文件,里面的配置信息可被被 jvm识别
    2. 格式要求
        key: value
        注意: 冒号后的空格必须有,不然格式有错误(java.io.IOException: invalid header field)
             不能有空白行
    3. 常用配置项
        Main-Class: One
        Class-Path: /root/up
复制代码

5.怎样用 jar 进行打jar 包?

5.1 关于 jar命令

复制代码
    功能:
        制作jar包、解压jar、查看jar内容
    语法: 
        jar -options [jar-file] [manifest-file] [-C dir] files ...
    参数:
        -c  创建新档案(打jar)
        -t  列出档案目录(查询jar)
        -x  从档案中提取指定的(或所有)文件 (解压jar包)

        -u  更新现有档案
        -v  在标准输出中生成详细输出
        -f  指定档案文件名
        -m  包含指定清单文件中的清单信息
        -M  不创建条目的清单文件
        -C  更改为指定的目录并包含以下文件
复制代码

5.2 打jar包

 示例1: 将当前目录下的 .class 文件进行打包

jar -cvf gc.jar *.class

    -c  创建新档案
    -v  在标准输出中生成详细输出
    -f  指定档案文件名

示例2: 将bin目录下的 所有文件进行打包

jar -cvf gc1.jar -C bin .

示例3: 将 自定义的 MANIFEST.MF 注入到 jar包的META-INF/MANIFEST.MF 中 (创建一个 可执行的 jar包)

复制代码
1. 创建 mainfile 
Main-Class: One
Class-Path: /root/up

2. 执行命令
jar -cvfm gc.jar mainfile *.class

3. 测试
java -jar gc.jar #可直接执行 jar
复制代码

5.3 查看 jar 指定内容

jar -tf antlr-4.0-complete.jar

    -f  指定档案文件名
    -t  列出档案目录

5.4 解压jar 包

jar -xvf xxx.jar 
 -x  从档案中提取指定的(或所有)文件
 -v  在标准输出中生成详细输出
 -f  指定档案文件名

6.怎样是用 idea打 jar包?

 https://www.cnblogs.com/bajiaotai/p/15378736.html

7.怎样是用 maven打 jar包?

 

参考: 

https://blog.csdn.net/cnds123/article/details/115480190
Java 之使用 jar 命令打包

https://blog.csdn.net/Alecor/article/details/110622771?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-5-110622771-blog-118292710.t0_edu_mix&spm=1001.2101.3001.4242.4&utm_relevant_index=8
Jar包分析-META-INF文件夹

 

 

 

 

 

 



posted @   学而不思则罔!  阅读(187)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示