A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘艳伟 中级黑马   /  2012-11-25 11:15  /  2623 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘艳伟 于 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类的所有参数。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马