本帖最后由 刘艳伟 于 2012-11-26 10:44 编辑  
 
  为了方便程序的运行,有时我们需要将Java类打成Jar包的形式,在此,我将分别讲述无包名和有包名的类的不同的打包方式。 
  第一种:无包名 
  比如将Hello.java,B.java,C.java文件打包为Jar文件。   Hello.java 
|   public class Hello{         public static void main(String args[]){             System.out.println("Hello World!!!");        }     }    |     B.java 
  public class B{} 
  C.java 
  public class C{} 
       1、编译     E:\lianxi>javac Hello.java B.java C.java  
       2、编写文件清单MF文件,比如起名为:MANIFEST.MF [名字可任意起,此处如此命名只为了和Java自动生成的清单文件名称一致,不管你起什么名字,生成的Jar包中的清单文件名字都是MANIFEST.MF;后缀名大小写无碍]   Manifest-Version: 1.0  
  Class: B C   Main-Class: Hello     Created-By: 1.7.0 (Oracle Corporation)        |     注:红色前面是有空格的,没有空格会出错,空格数目不限。属性名大小写均可,第三句可有可无,配置清单中两行之间不能有空行。 
 
  3、生成Jar文件     E:\lianxi>jar cfm Hello.jar MANIFEST.MF Hello.class B.class C.class   其中参数c表示要生成一个新的Jar文件,f表示要生成的Jar文件的名字,m表示包含指定清单文件中的清单信息。 
           生成的Jar包的内部格式为 
     
 
 
 
    自动生成的MANIFEST.MF中的内容为: 
     Manifest-Version: 1.0 
     Class: B C 
     Created-By: 1.7.0 (Oracle Corporation) 
     Main-Class: Hello 
 
  4、运行     E:\lianxi>java –jar Hello.jar  
  5、查看Jar文件中的内容        E:\lianxi>jar tf Hello.jar  
  6、解压Jar文件 
    E:\lianxi>jar xf Hello.jar  
  7、更新Jar文件,将一个新的类文件增加到Jar包中 
       E:\lianxi>jar –uf Hello.jar D.class  
   此时生成的Jar包的内部格式为 
    
 
 
 
    MANIFEST.MF中的内容为: 
     Manifest-Version: 1.0  
     Class: B C   
     Created-By: 1.7.0 (Oracle Corporation) 
     Main-Class: Hello 
  可以看到被添加的新类已经添加到Jar包中了,但是在清单文件中并没有添加。○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○   温馨提示:   被打包后的Jar文件名是可以随意起的,并且文件清单的后缀可以是.txt的,经实验能成功运行。  
  第二种:有包名 
  如果要打包的类带有包名,比如 |   package com.itheima     public class Hello{         public static void main(String args[]){             System.out.println("Hello World!!!");         }     }    |  
   则打包的过程为:   1、编译     E:\lianxi>javac –d . Hello.java  
  2、编写文件清单MANIFEST.MF 文件 |   Manifest-Version: 1.0      Main-Class: com.itheima.Hello     Created-By: 1.7.0 (Oracle Corporation)        |  
  
  3、生成Jar包     E:\lianxi>jar cf test.jar com   此时即使我们不写文件清单,也是可以正确打包的。对于带有包名的类,生成Jar包时直接用最顶层包名,后面不要再跟路径或是文件名,否则无法打包,但要记住当前DOS的运行位置为顶层包名的上一级目录,比如com在E:\lianxi下,则打包时的情况为E:\lianxi>jar cf test.jar com  
  4、运行 
  带有包名的Jar包在运行时有些特殊,和无包名类不一样,如下 
    E:\lianxi>java -cp Hello.jar com.itheima.Hello 
  或者 
    E:\lianxi>java -classpath Hello.jar com.itheima.Hello 
○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○○●○●○   温馨提示:     在DOS中输入jar,回车即可列出打包时的所有参数; 
    在DOS中输入java,回车即可列出运行Java类的所有参数。 |