Java魔法堂:打包知识点之META-INF/MAINFEST.MF(转)

简介: 一、前言                                    通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF,那是为什么呢? 其实关于JAR包的描述信息、启动时的配置信息和安全性信息等均保存在META-INF下,因此了解META-INF目录对发布、部署十分重要的哦!下面仅为部分内容的整理,待日后深入实践后再补充完整。

一、前言                                    通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF,那是为什么呢? 其实关于JAR包的描述信息、启动时的配置信息和安全性信息等均保存在META-INF下,因此了解META-INF目录对发布、部署十分重要的哦!下面仅为部分内容的整理,待日后深入实践后再补充完整。官方文档为:http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html 二、META-INF/MAINFEST.MF清单文件组成元素                 META-INF/MAINFEST.MF清单文件由1个 main-section 和0到N个 individual-section 组成,而每个section中含有多个attribute组成,其中 main-section 中的attribute命名为 main-attribute ,而 individual-section 中的attribute命名为 perentry-attribute 。 各个attribute间使用作为分隔符(Unix下则使用作为分隔符,Mac下则使用作为分隔符)。 individual-section 以名为 Name 的 perentry-attribute 来标识该区域,且作为该区域的起始行。 示例: Manifest-Version: 1.0 Created-By: 1.2 (Sun Microsystems Inc.) Sealed: true Name: foo/bar/ Sealed: false main-section 用于描述JAR包的安全、配置信息,和对JAR包内所有包和文件的默认信息。 每个 individual-section 用于描述JAR包中单个包或文件,但不是JAR包中的每个包和文件都必须配置 individual-section ,但对于需要被签名的文件就必须配置对应的 individual-section 了。 三、 main-attribute 详解                             1. 常规属性 Mainfest-Version: JAR版本号 Created-By: 生产者 Signature-Version: 签名版本 Class-Path: 依赖项列表,若存在多个依赖项时则采用空格分隔。依赖项路径为以JAR包路径为参考系的相对路径 2. 可执行的JAR包属性 Main-Class: main函数所在的全限定类名 四、 perentry-attribute 详解                         1. Name属性, individual-section 的起始属性,包命名规范形如:com/test/myapp/,文件命名规范形如:com/test/myapp/MyApp.class。 2. 定义文件内容 Content-Type: MIME类型(格式为:type/subtype。例如,image/jpeg) 五、注意事项                               1. 键值对独立占据一行或多行; 2. 每行最大长度为72个字符; 3. 每行的最后一个字符必须以回车符换行符结尾,而且回车符换行符不能有空格(使用正则表达式表达每行规范就是/^.+\S\r\n/4.使/[]1,.+§\r\n/)。 尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/4046856.html ^_^肥仔John 参考                                   http://blog.csdn.net/zhifeiyu2008/article/details/8829637 http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html

http://www.cnblogs.com/fsjohnhuang/p/4046856.html

 

目录
打赏
0
0
0
0
95
分享
相关文章
Java打包jar运行时分离lib和jar
在`pom.xml`的`build`节点中,设置`packaging`为`jar`,并配置插件分离依赖库到`lib`目录和资源文件到`resources`目录。这样可以在运行时通过`-Dloader.path=lib,resources`加载外部依赖和资源文件,便于独立升级依赖库和修改资源文件,而无需重新打包程序。具体插件包括`maven-dependency-plugin`、`maven-resources-plugin`和`spring-boot-maven-plugin`等。
58 1
|
3月前
|
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
906 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
Java网络编程知识点
Java网络编程知识点
81 13
|
4月前
|
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
213 4
[Java]知识点
本文涵盖Java编程中的多个知识点,包括静态与动态代理、基本数据类型转换、设计模式、异常处理、类加载、序列化、ORM框架、IPv4地址分类、编译与解释等。文章详细介绍了每个知识点的原理和使用方法,并提供了相关示例和注意事项。
67 16
[Java]知识点
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
859 2
做了个Java打包工具,可以双击启动了!
本文介绍了作者日常使用Java和Swing进行开发的经验,以及Java程序分发时遇到的问题,如需要JRE环境。文中列举了几种常见的Java程序打包方法,并对比了各自的优缺点,最后作者结合这些方案,利用Winform开发了一款工具,将Java程序打包成二进制可执行文件,简化了分发流程。
做了个Java打包工具,可以双击启动了!
【JAVA系列】打包Class文件生成Jar包
【JAVA系列】打包Class文件生成Jar包
174 0
java项目打包,如何将使用到的jar包打入到项目的jar包中(适用于不方便添加lib到目标服务的情况)
java项目打包,如何将使用到的jar包打入到项目的jar包中(适用于不方便添加lib到目标服务的情况)
237 0

热门文章

最新文章