黑马程序员技术交流社区

标题: 关于手动将Java类打成Jar包的总结 [打印本页]

作者: 刘艳伟    时间: 2012-11-25 11:15
标题: 关于手动将Java类打成Jar包的总结
本帖最后由 刘艳伟 于 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类的所有参数。

作者: 许庭洲    时间: 2012-11-26 07:26
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2