Java魔法堂:打包知识点之jar
一、前言
通过eclipse导出jar包十分方便快捷,但作为码农岂能满足GUI的便捷呢?所以一起来CLI吧!
二、JAR包
JAR包是基于ZIP文件格式,用于将多个.java文件和各种资源文件,或将多个.class和各种资源打包为一个文件。用于发布,部署,封装库、组件和插件程序,从而被编译器和JVM使用。
三、通过jar命令打包
1. 格式 jar [option]* 文件名
必选选项(并且仅能选用其中一个)
-c ,创建一个jar包
-t ,显示jar包中的内容列表
-x ,解压jar包
-u ,添加文件到jar包
可选选项
-v ,生成详细报告,并输出到标准输出设备
-m ,用于指定manifest.mf文件。(默认情况下会自动生成META-INF/MANIFEST.MF文件)
-O ,创建jar包时不对内容进行压缩
-M ,不自动产生manifest.mf文件
-i ,创建jar包时创建META-INF/INDEX.LIST索引文件
-C ,表示切换到指定目录来执行jar命令
-f ,指定jar包的文件路径
2. 常用示例
示例的目录结构:
/
|-- src
| |-- test.class
|-- META-INF
| |-- MAINFEST.MF
|-- MAINFEST.MF
|-- other
|--additional.class
命令:
/* 1. 默认打包 */
// 生成的src.jar中就含src目录和jar自动生成的META-INF目录(内含MAINFEST.MF清单文件)
jar -cvf src.jar src
/* 2. 查看包内容(jar过大时就无法查看) */
jar -tvf src.jar
/* 3. 解压jar包 */
jar -xvf src.jar
/* 4. 提取jar包部分内容 */
jar -xvf src.jar srctest.class
/* 5. 追加内容到jar包 */
//追加MAINFEST.MF清单文件以外的文件,会追加整个目录结构
jar -uvf src.jar otheradditional.class
//追加清单文件,会追加整个目录结构(src.jar会包含META-INF目录)
jar -uMvf src.jar META-INFMAINFEST.MF
/* 6. 创建自定义MAINFEST.MF的jar包 */
jar -cMvf src.jar src META-INF
// 通过-m选项配置自定义MAINFEST.MF文件时,自定义MAINFEST.MF文件必须在位于工作目录下才可以
jar -cmvf MAINFEST.MF src.jar src
三、通过Eclipse导出jar
在需导出的包、类上鼠标右键点击“Export”,然后选择“Java”下的“JAR file”,然后就是各种下一步就OK了。
四、可执行的JAR包
当jar包中包含可执行程序时,就可以通过 java -jar src.jar 命令来执行该可执行程序。打包的过程与上述操作无异,就是多了一步——配置META-INF/MAINFEST.MF文件。
关于META-INF目录以及META-INF/MAINFEST.MF清单文件的内容,将在《Java魔法堂:打包知识点之META-INF/MAINFEST.MF》中探讨。
参考
http://blog.csdn.net/zhifeiyu2008/article/details/8829637
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- springboot 默认日志配置源码
- logback 通过javaconfig实现配置
- springboot通过javaconfig实现logback配置
- 干货来了,vue 3.0 自定义指令变化
- XXE注入漏洞
- vue + typescript 类组件教程
- 图像处理笔记(3)----OpenCV图像算术运算
- V - Distpicker 是一个简单易用的地区选择器
- [漫谈] 状态
- 变量覆盖
- 【Rust日报】2020-08-27 在Arduino Uno上面跑 Rust 程序
- 浅谈类加载
- Rust FFI 编程 - Rust导出共享库06
- go语言文件操作汇总
- Redis 主从复制 哨兵模式实战