jar打包

准备两个类Test1.java和Test2.java打包成Jerry.jar
然后编写另一个类使用此包:Use.java


 1public class Test1
 2{
 3    
 4    public void fTest1()
 5    {
 6        System.out.println("I am a method In Test1 class");
 7    }

 8}

 9
10


public class Test2
{
    
public void fTest2()
    
{
        System.out.println(
"I am a method In Test2 classs");
    }

    
}

编译生成Test1.class Test2.class
编写打包清单:jar moon.mf
Manifest - Version:  1.0
Class: Test1  Test2
Created
- By:  1.4 (sun Microsystems Inc.)

注意:打包清单编写,每行的":"后要有一个空格;

Use.java
class  Use 
{
  
public static void main(String args[])
  
{
      Test1 t1
=new Test1();
      Test2 t2
=new Test2();
      t1.fTest1();
      t2.fTest2();
  
  }

}


至此完成打包过程;

附jar相关知识:
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。

JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。

一个 JAR 文件可以用于:

□ 用于发布和使用类库

□ 作为应用程序和扩展的构建单元

□ 作为组件、applet 或者插件程序的部署单位

□ 用于打包与组件相关联的辅助资源

JAR 文件格式提供了许多优势和功能,其中很多是传统的压缩格式如 ZIP 或者 TAR 所没有提供的。它们包括:

·安全性。 可以对 JAR 文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。

·减少下载时间。 如果一个 applet 捆绑到一个 JAR 文件中,那么浏览器就可以在一个 HTTP 事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。

·压缩。JAR 格式允许您压缩文件以提高存储效率。

·传输平台扩展。 Java 扩展框架(Java Extensions Framework)提供了向 Java 核心平台添加功能的方法,这些扩展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 开发的扩展例子)。

·包密封。 存储在 JAR 文件中的包可以选择进行密封,以增强版本一致性和安全性。密封一个包意味着包中的所有类都必须在同一 JAR 文件中找到。

·包版本控制。 一个 JAR 文件可以包含有关它所包含的文件的数据,如厂商和版本信息。

·可移植性。 处理 JAR 文件的机制是 Java 平台核心 API 的标准部分。
jar  命令详解  
 
jar  是随  JDK  安装的,在  JDK  安装目录下的  bin  目录中,Windows  下文件名为  jar.exe,Linux  下文件名为  jar。它的运行需要用到  JDK  安装目录下  lib  目录中的  tools.jar  文件。不过我们除了安装  JDK  什么也不需要做,因为  SUN  已经帮我们做好了。我们甚至不需要将  tools.jar  放到  CLASSPATH  中。  
 
使用不带任何的  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  参数的附属参数  
 
[-C  目录]  表示转到指定目录下去执行这个  jar  命令的操作。它相当于先使用  cd  命令转该目录下再执行不带  -C  参数的  jar  命令,它只能在创建和更新  JAR  文件包的时候可用。    
 
文件名  ...  指定一个文件/目录列表,这些文件/目录就是要添加到  JAR  文件包中的文件/目录。如果指定了目录,那么  jar  命令打包的时候会自动把该目录中的所有文件和子目录打入包中。  
 
下面举一些例子来说明  jar  命令的用法:  
 
1)  jar  cf  test.jar  test  
 
该命令没有执行过程的显示,执行结果是在当前目录生成了  test.jar  文件。如果当前目录已经存在  test.jar,那么该文件将被覆盖。  
 
2)  jar  cvf  test.jar  test  
 
该命令与上例中的结果相同,但是由于  v  参数的作用,显示出了打包过程,如下:  
 
标明清单(manifest)  
 
增加:test/(读入=  0)  (写出=  0)(存储了  0%)  
 
增加:test/Test.class(读入=  7)  (写出=  6)(压缩了  14%)  
 
3)  jar  cvfM  test.jar  test  
 
该命令与  2)  结果类似,但在生成的  test.jar  中没有包含  META-INF/MANIFEST  文件,打包过程的信息也略有差别:  
 
增加:test/(读入=  0)  (写出=  0)(存储了  0%)  
 
增加:test/Test.class(读入=  7)  (写出=  6)(压缩了  14%)  
 
4)  jar  cvfm  test.jar  manifest.mf  test  
 
运行结果与  2)  相似,显示信息也相同,只是生成  JAR  包中的  META-INF/MANIFEST  内容不同,是包含了  manifest.mf  的内容  
 
5)  jar  tf  test.jar  
 
在  test.jar  已经存在的情况下,可以查看  test.jar  中的内容,如对于  2)  和  3)  生成的  test.jar  分别应该此命令,结果如下;  
 
对于  2)  
 
META-INF/  
 
META-INF/MANIFEST.MF  
 
test/  
 
test/Test.class  
 
对于  3)  
 
test/  
 
test/Test.class  
 
6)  jar  tvf  test.jar  
 
除显示  5)  中显示的内容外,还包括包内文件的详细信息,如:  
 
0  Wed  Jun  19  15:39:06  GMT  2002  META-INF/  
 
86  Wed  Jun  19  15:39:06  GMT  2002  META-INF/MANIFEST.MF  
 
0  Wed  Jun  19  15:33:04  GMT  2002  test/  
 
7  Wed  Jun  19  15:33:04  GMT  2002  test/Test.class  
 
7)  jar  xf  test.jar  
 
解开  test.jar  到当前目录,不显示任何信息,对于  2)  生成的  test.jar,解开后的目录结构如下:  
 
  ==  
 
    ¦--  META-INF  
 
    ¦   `--  MANIFEST  
 
  `--  test  
 
    `--Test.class  
 
8)  jar  xvf  test.jar  
 
运行结果与  7)  相同,对于解压过程有详细信息显示,如:  
 
创建:META-INF/  
 
展开:META-INF/MANIFEST.MF  
 
创建:test/  
 
展开:test/Test.class  
 
9)  jar  uf  test.jar  manifest.mf  
 
在  test.jar  中添加了文件  manifest.mf,此使用  jar  tf  来查看  test.jar  可以发现  test.jar  中比原来多了一个  manifest。这里顺便提一下,如果使用  -m  参数并指定  manifest.mf  文件,那么  manifest.mf  是作为清单文件  MANIFEST  来使用的,它的内容会被添加到  MANIFEST  中;但是,如果作为一般文件添加到  JAR  文件包中,它跟一般文件无异。  
 
10)  jar  uvf  test.jar  manifest.mf  
 
与  9)  结果相同,同时有详细信息显示,如:  
 
增加:manifest.mf(读入=  17)  (写出=  19)(压缩了  -11%)  
 
4.  关于  JAR  文件包的一些技巧  
 
1)  使用  unzip  来解压  JAR  文件  
 
在介绍  JAR  文件的时候就已经说过了,JAR  文件实际上就是  ZIP  文件,所以可以使用常见的一些解压  ZIP  文件的工具来解压  JAR  文件,如  Windows  下的  WinZip、WinRAR  等和  Linux  下的  unzip  等。使用  WinZip  和  WinRAR  等来解压是因为它们解压比较直观,方便。而使用  unzip,则是因为它解压时可以使用  -d  参数指定目标目录。  
 
在解压一个  JAR  文件的时候是不能使用  jar  的  -C  参数来指定解压的目标的,因为  -C  参数只在创建或者更新包的时候可用。那么需要将文件解压到某个指定目录下的时候就需要先将这具  JAR  文件拷贝到目标目录下,再进行解压,比较麻烦。如果使用  unzip,就不需要这么麻烦了,只需要指定一个  -d  参数即可。如:  
 
unzip  test.jar  -d  dest/  
 
2)  使用  WinZip  或者  WinRAR  等工具创建  JAR  文件  
 
上面提到  JAR  文件就是包含了  META-INF/MANIFEST  的  ZIP  文件,所以,只需要使用  WinZip、WinRAR  等工具创建所需要  ZIP  压缩包,再往这个  ZIP  压缩包中添加一个包含  MANIFEST  文件的  META-INF  目录即可。对于使用  jar  命令的  -m  参数指定清单文件的情况,只需要将这个  MANIFEST  按需要修改即可。  
 
3)  使用  jar  命令创建  ZIP  文件  
 
有些  Linux  下提供了  unzip  命令,但没有  zip  命令,所以需要可以对  ZIP  文件进行解压,即不能创建  ZIP  文件。如要创建一个  ZIP  文件,使用带  -M  参数的  jar  命令即可,因为  -M  参数表示制作  JAR  包的时候不添加  MANIFEST  清单,那么只需要在指定目标  JAR  文件的地方将  .jar  扩展名改为  .zip  扩展名,创建的就是一个不折不扣的  ZIP  文件了,如将上一节的第  3)  个例子略作改动:  
 
---------------------------------------------------------------  
 
如果只想看一下有什么东东,用winrar也可以看。  
用法:jar  {ctxu}[vfm0M]  [jar-文件]  [manifest-文件]  [-C  目录]  文件名  ...  
选项:  
       -c    创建新的存档  
       -t    列出存档内容的列表  
       -x    展开存档中的命名的(或所有的〕文件  
       -u    更新已存在的存档  
       -v    生成详细输出到标准输出上  
       -f    指定存档文件名  
       -m    包含来自标明文件的标明信息  
       -0    只存储方式;未用ZIP压缩格式  
       -M    不产生所有项的清单(manifest〕文件  
       -i    为指定的jar文件产生索引信息  
       -C    改变到指定的目录,并且包含下列文件:  
如果一个文件名是一个目录,它将被递归处理。  
清单(manifest〕文件名和存档文件名都需要被指定,按'm'  和  'f'标志指定的相同顺序。  
 
示例1:将两个class文件存档到一个名为  'classes.jar'  的存档文件中:  
             jar  cvf  classes.jar  Foo.class  Bar.class  
示例2:用一个存在的清单(manifest)文件  'mymanifest'  将  foo/  目录下的所有  
                     文件存档到一个名为  'classes.jar'  的存档文件中:  
             jar  cvfm  classes.jar  mymanifest  -C  foo/  .  
 
---------------------------------------------------------------  
 
jar  cvf  flight.jar  aa\aa1  aa\aa2  
 
文件名后面是你要压缩的文件所在的目录,可以跟多个  
---------------------------------------------------------------  
 
jar  cvf  class.jar  GreetingServlet.class  22.class  33.class  
创建jar包  
如果你要查看tools.jar中的内容,用解压缩软件(比如rar)解开就可以看了

Feedback

出售蓝奇高级验证码识别引擎,可准确识别新浪动网淘宝CSDN等多种复杂验证码。

输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET,模拟精灵,按键精灵等多平台调用,调用方法简单,几行代码即可完成。独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算法(无论字体和大小), 使得该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有不错的识别率,是一款效果较为理想的验证码识别引擎。附详细的调用实例和代码注释等相关技术文档。

官方网站 - http://***/yzm_advocr
识别效果怎么样一试就知道 - DEMO下载 http://***/yzm_advocr/advocr.rar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值