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 src\test.class /* 5. 追加内容到jar包 */
//追加MAINFEST.MF清单文件以外的文件,会追加整个目录结构
jar -uvf src.jar other\additional.class //追加清单文件,会追加整个目录结构(src.jar会包含META-INF目录)
jar -uMvf src.jar META-INF\MAINFEST.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://www.cnblogs.com/fsjohnhuang/p/4046098.html ^_^肥仔John
参考
http://blog.csdn.net/zhifeiyu2008/article/details/8829637
Java魔法堂:打包知识点之jar的更多相关文章
- Java魔法堂:类加载器入了个门
一.前言 <Java魔法堂:类加载机制入了个门>中提及整个类加载流程中只有加载阶段作为码农的我们可以入手干预,其余均由JVM处理.本文将记录加载阶段的核心组件——类加载器的相关信息,以便日 ...
- 【转】Java魔法堂:String.format详解
Java魔法堂:String.format详解 目录 一.前言 二.重载方法 三.占位符 四.对字符.字符串进行格式化 五.对整数进行格式化 六. ...
- Java魔法堂:打包知识点之META-INF/MAINFEST.MF
一.前言 通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF ...
- Java魔法堂:打包知识点之META-INF/MAINFEST.MF(转)
一.前言 通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF,那是为 ...
- Java魔法堂:以Windows服务的形式运行Java程序
一.前言 由于防止维护人员误操作关闭Java控制台程序,因此决定将其改造为以Windows服务的形式运行.弄了一个上午总算搞定了,下面记录下来,以供日后查阅. 二.Java Service Wrapp ...
- IDEA如何把写好的java文件/项目打包成一个jar的文件
一.命令行的方法 打开cmd,输入jar -cvf [打包后的文件名].jar [要打包的目录]. 二.IDEA的方法 写完一个java程序把它封装成一个jar的包 这样就可以在别的jar上面运行这 ...
- 转 Java的各种打包方式(JAR/WAR/EAR/CAR)
JAR (Java Archive file) 包含内容:class.properties文件,是文件封装的最小单元:包含Java类的普通库.资源(resources).辅助文件(auxiliary ...
- Java魔法堂:类加载机制入了个门
一.前言 当在CMD/SHELL中输入 $ java Main<CR><LF> 后,Main程序就开始运行了,但在运行之前总得先把Main.class及其所依赖的类加载到JVM ...
- Java魔法堂:URI、URL(含URL Protocol Handler)和URN
一.前言 过去一直搞不清什么是URI什么是URL,现在是时候好好弄清楚它们了!本文作为学习笔记,以便日后查询,若有纰漏请大家指正! 二.从URI说起 1. 概念 URI(Uniform Reso ...
随机推荐
- Windows共享内存示例
共享内存主要是通过映射机制实现的. Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的.所谓的重叠是指同一块内存区域可能被多个进程同时使用.当调用 CreateFileMapp ...
- MDT 2010驱动管理新方法。
参考:https://4sysops.com/archives/driver-deployment-with-microsoft-deployment-toolkit-mdt-part-1-os-de ...
- IOS图像拉伸解决方案
UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种: 第一种方法很简单而且使用性更广.做法就是直接拉伸想要setBackgroundImage的image,代码如下: UIImag ...
- LINUX系统下添加映射存储LUN
LINUX系统下添加映射存储LUN(无需重启) 背景:Oracle rac环境 添加新实例,重新划分存储空间,从存储映射新的LUN. 问题:映射后,linux操作系统无法识别新的LUN,不能重启系统, ...
- centos7 linux 安装jdk8
1.下载64位jdk8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.在 ...
- Android获取TextView显示的字符串宽度
工作上有业务需要判断textview是否换行,我的做法是判断textview要显示的字符串的宽度是否超过我设定的宽度,若超过则会执行换行. 项目中的其他地方也有这样的需求,故直接使用了那一块的代码.如 ...
- 小数量宽带用户的福音,Panabit 云计费easyradius 接口隆重发布,PA宽带计费系统
PA接口在早前就发布了,但是一直迟迟没有发布官方说明文档,由于最近问的客户较多,特写了这篇文档 由于PA使用标准radius认证协议,所以用户需要在本地搭建一个计费,由于大部分用户的数量只有几百个,不 ...
- android 内置视频目录
在做引导界面的时候有一个视频文件, 把它放在res/raw目录下面. 引用方法 如下: videoView = (VideoView) findViewById(R.id.video_view); v ...
- ORACLE自定义顺序排序-转
ORACLE可以借助DECODE函数,自定义顺序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' ...
- 延迟渲染 deferred Shading
流程: 1.先渲染一遍物体的位置,法线 和颜色 到三张纹理 2.在根据这三张纹理渲染一遍灯光 3.合成颜色图和灯光图 (ssao图) 看上去好像灯光不多,其实我在这里加了200个灯, 每个球代表 ...