• 使用JAR文件  

  JAR文件全称Java ARchive File, java档案文件。 通常JAR文件是一种压缩文件,通常称为JAR包。JAR文件和ZIP文件的区别是JAR文件默认包含了一个名为META-INF/MANIFEST.MF的清单文件,这个清单文件时在生成JAR文件时由系统自动创建的。

  当开发了一个应用程序后,这个应用程序包含了很多类,如果需要把这个应用程序提供给别人使用,通常会将这些类文件打包给一个JAR文件,把这个jar文件提供给别人使用。 只要别人在系统的CLASSPATH环境变量中添加这个JAR文件,则JVM就可以自动在内存中解压这个JAR包,把这个JAR包当成一个路径,在这个路径中查找所需要的类或包层次对应的路径结构。

  jar是随JDK自动安装的,在JDK安装目录下的bin目录中。

  • JAR命令详解
  1.  创建JAR文件:jar cf test.jar test

  该命令不显示压缩过程。将当前路径下的test路径下的全部内容生成一个test.jar文件。如果当前目录中已经存在test.jar文件,那么该文件将被覆盖。

  2.    创建JAR文件,并显示压缩过程:jar cvf test.jar test

  同1命令,但是因为多了-v参数,会显示打包过程。

  3.    不是用清单文件:jar cvfM test.jar test

  同2,但是M选项表示不生成清单文件,所以打出的test.jar包中不包含META-INF/MANIFEST.MF文件,打包过程信息也略有差异。

  4.   自定义清单文件内容:jar cvfm test.jar manifest.mf test

  与2相似,显示信息也相同,但是小写m选项指定读取用户清单文件信息,因此在生成的JAR包中清单文件META-INF/MANIFEST.MF的内容有所不同,它会在打出来的清单文件基础上增加自定义manifest.mf文件的内容。

  清单内容由key:<空格>value组成,每行只能定义一个key-value对,每行的key-value对之前不能有空格,必须顶格写。文件内容开头不能空行,文件必须以一个空行结束。

  5.  查看JAR包内容:jar tf test.jar

  6.    查看JAR包详细内容(size, last update time):jar tvf test.jar

  7.    解压缩:jar xf test.jar

  8.    带提示信息解压缩:jar xvf test.jar

  9.    更新JAR文件:jar uf test.jar Hello.class

  如果test.jar中已有Hello.class文件,则使用新的Hello.class文件替换原来的Hello.class文件,如果test.jar 中没有Hello.class文件,则把新的Hello.class文件添加到test.jar文件中。

  10.  更新时显示详细信息:jar uvf test.jar Hello.class

  • 创建可执行的JAR包

  当一个应用程序开发成功后,大致有三种发布方式:

  1. 使用平台相关的编译器将整个应用编译成平台相关的可执行性文件。这种方式常常需要第三方编译器支持,而且编译器生成的可执行性文件丧失了跨平台特性,甚至可能有一定的性能下降。
  2. 为应用编译一个批处理文件(bash脚本),例如:java package.MainClass 当用户单击上面的bash脚本,就会执行java命令,从而运行程序主类
  3. 将一个应用程序制作成可执行的JAR包,通过JAR包来发布应用程序。这也是比较典型的方法。

  

  创建可执行的JAR包的关键在于:让javaw命令知道JAR包中哪个类是主类,javaw命令可以通过运行该主类来运行程序。jar命令中有一个-e选项,该选项指定JAR宝忠作为程序入口的主类的类名:

    jar cvfe test.jar Test *.class

  上面命令把当前目录下的所有*.class文件都压缩到test.jar包中,并指定使用Test类作为程序入口。

  

  • JAR包技巧

  在linux下,使用unzip来解压jar包,如果需要将文件解压缩到指定目录下,只需要指定一个-d选项即可。

转载于:https://www.cnblogs.com/IvySue/p/6344518.html

《疯狂Java讲义》(十八)---- JAR文件相关推荐

  1. 疯狂Java讲义(八)----第一部分

    本章重点: Java集合类是一种特别有用的工具类,可用于存储数量不等的对象,并可以实现常用的数据结构,如栈.队列等.除此之外,Java 集合还可用于保存具有映射关系的关联数组.Java集合大致可分为S ...

  2. 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

    http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...

  3. 《疯狂Java讲义》学习笔记 第六章 面向对象(下)

    <疯狂Java讲义>学习笔记 第六章 面向对象(下) 6.1包装类 基本数据类型 包装类 byte Byte short Short int Integer long Long char ...

  4. [疯狂Java讲义精粹] 第十三章|类加载机制与反射

    java.lang.reflect包下的接口和类, 包括Class, Method, Filed,Constructor和Array等, 这些类分别代表类, 方法, Field, 构造器和数组, Ja ...

  5. 疯狂Java讲义(六)----第四部分

    1.枚举类 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象;再比如行星类,目前只有8个对象.这种实例有限而且固定的类,在Java里被称为枚举类. 在早期代码中,可能会直接使用简 ...

  6. 《疯狂Java讲义》学习笔记 第六章 面向对象(下续)

    这里## 6.6 Java 9改进的接口 6.6.1 接口的概念 6.6.2 Java 9中接口的定义 6.6.3接口的继承 ==以下代码中纯在自己的很多错误== 6.6.4使用接口 6.6.5接口和 ...

  7. 《疯狂Java讲义》读书笔记5

    目录 Java的集合类 Inerator 接口 Set 集合 HashSet 类 LinkedHashSet 类 TreeSet 类 EnumSet 类 List 集合 ArrayList 和 Vec ...

  8. 学习《疯狂Java讲义第4版》PDF+代码+课件+面试题分析

    学习java选择了<疯狂java讲义>最新的第四版,用了两个多月时间看完,一边阅读,一边敲代码.对Java有了不少新的认识.书中实例清晰明了,讲解也是娓娓道来.Java可以编写图形桌面系统 ...

  9. 【社区图书馆】疯狂 Java 讲义:但凡种种,不一而足

    虽说酒香不怕巷子深,但是千里之外并不一定能闻到,有人看到这可能会感觉这不免有些杠的味道,其实我想表达的是好酒也需要宣传,比如今天我所要讲的这本书<疯狂Java讲义>. 这不是[赠书活动], ...

  10. 疯狂java讲义 光盘_书单丨24岁的Java,到底有多美?

    Java诞生二十多年来尽管有坎坷有颠簸 但仍在计算核心层面占有重要地位 且多年来达成的辉煌仍无人能及 跟随本书单走进Java,一同领略Java之美 NO. 1 <码出高效:Java开发手册> ...

最新文章

  1. 已解决:CentOS 7安装Docker Compose
  2. mvvm绑定checkbox wpf_wpf中使用mvvm,解决checkbox全选问题
  3. andorid 第五天 了解xml与应用程序之间的关系
  4. Java Web学习(三)数据加密方式详解
  5. 折半搜索+洛谷 P2962 [USACO09NOV]Lights G
  6. ZJOI 2014 星系调查(推导)
  7. 【Java】JFileChooser的用法及借助JFileChooser选择文件并操纵打印机打印出来
  8. java如何逆向工程_总结一下java如何进行逆向工程
  9. SQL Server 2019 安装教程
  10. [FAQ15840]MT2503系列充电电流问题
  11. pt和px区别 pt是逻辑像素,px是物理像素
  12. 中英文论文写作指导第一部分(文题、摘要、关键字)
  13. 637-字符串模式匹配-BF算法
  14. qq音乐服务器的位置,QQ音乐的歌曲真实地址解析
  15. HTML 边框和背景设置
  16. 浅谈PHP如何实现网站文章或博客浏览量页面访问量+1
  17. c#与汇川机器人通讯_C#与西门子PLC通讯
  18. android recovery分区内刷镜像,Android手机Recovery模式取证方法研究.pdf
  19. c语言中short作用,C语言short
  20. 51nod 1875 丢手绢

热门文章

  1. markdown语法中的空格_Markdown实用技巧-基础语法
  2. win10连接mq_Win10环境下配置RocketMQ
  3. 将图片变换成3d对象
  4. redis+tomcat实现session共享
  5. Centos中yum方式安装java
  6. 《设计模式之美》之接口、抽象类笔记
  7. python怎么计算圆上任意两点的距离_圆周上两点距离-python
  8. 组态王通过串口服务器通讯smart200_实例讲解通过代码调试串口通讯的方法
  9. 电子相册系统(七)查看原图
  10. 基于GPU的大规模图计算系统与应用