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

如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!


本文转自^_^肥仔John博客园博客,原文链接:http://www.cnblogs.com/fsjohnhuang/p/4046098.html,如需转载请自行联系原作者

相关文章
|
7天前
|
JavaScript Java 编译器
Java包装类和泛型的知识点详解
Java包装类和泛型的知识点的深度理解
|
24天前
|
IDE Java Linux
Seata常见问题之重新打包以单独用jar来部署如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
99 1
|
12天前
|
Java
java线程知识点总结
Java线程核心概念:线程是程序执行流,一个进程可有多个线程。创建线程通过继承Thread或实现Runnable接口。线程状态包括新建、就绪、运行、阻塞、等待、超时等待和终止。同步用synchronized或Lock防止数据不一致,避免死锁。线程间通过共享变量、wait/notify通信。线程池(如ThreadPoolExecutor、ScheduledThreadPoolExecutor)优化性能和资源管理。
16 6
|
16天前
|
设计模式 安全 Java
Java基础知识点总结1
Java基础知识点总结
23 0
|
17天前
|
Java
java中jar启动设置内存大小java -jar 设置堆栈内存大小
java中jar启动设置内存大小java -jar 设置堆栈内存大小
11 1
|
29天前
|
Java 索引
java知识点总结(二)
java知识点总结(二)
13 0
|
29天前
|
存储 Java 数据库
java基础的知识点(一)
java基础的知识点(一)
12 0
|
30天前
|
NoSQL Java 应用服务中间件
使用innoSetup将mysql+nginx+redis+jar包打包成windows安装包
使用innoSetup将mysql+nginx+redis+jar包打包成windows安装包
使用innoSetup将mysql+nginx+redis+jar包打包成windows安装包
|
1月前
|
Oracle Java 关系型数据库
【问题】Cause: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
【问题】Cause: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
|
1月前
|
Java 开发工具 Windows
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
Windows环境下面启动jar包,输出的日志出现乱码的解决办法