JAR 文件全称Java Archive File(Java文档文件)。
  JAR 文件是一个特殊的 ZIP 文件,所以称作文件包。
  JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个 文件是在生成 JAR 文件的时候自动创建的。

Jar文件 
      ┃  
      ┣ META-INF 
      ┃      ┗ MANIFEST.MF  
      ┃ 
      ┗ package 
          ┗ java.class


 

建立可执行的jar的文件只需要在MANIFEST.MF中添加
Main-Class: 可执行主类全名(包含包名)
然后打包即可
  注意的是,创建的 JAR 文件包中的文件结构要求与 Java 程序的包结构对应。而 Main-Class 指定的类,也必须包含包路径 的完整类名(不需要加上.class)

使用jar命令打包
  要到 目录 的上级目录中去使用 jar 命令来创建 JAR 文件包这样才能将MANIFEST.MF包含进去。

jar 命令详解 
  使用不带任何的 jar 命令我们可以看到 jar 命令的用法如下: 
  jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] [文件名]
  其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:
 
   -c 创建新的 JAR 文件包 
   -t 列出 JAR 文件包的内容列表 
   -x 展开 JAR 文件包的指定文件或者所有文件 
   -u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中) 
   [vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的选项参数 
   -v 生成详细报告并打印到标准输出 
   -f 指定 JAR 文件名,通常这个参数是必须的 
   -m 指定需要包含的 MANIFEST 清单文件 
   -0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快 
   -M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数 
   [jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数 
   [manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数 chi hair straightener
   
   [-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数 的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。   

   [文件名] 指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打 包的时候会自动把该目录中的所有文件和子目录打入包中。