打包的主要两个目的:
一:可以将自己写一些常用的方法写好了,之后打包成jar包。之后把这个包导进去就可以用了,不用重复写。
二:写好了应用程序之后,打包。
1.一个比较方便的包法:在MyEclipse中,把自己做好的功能打成jar包。
前面说了打包的两个目的,所以,用这种打包时,要注意的一点是要打成什么样的包:
对于目的一:方式是 工程上点右键export-->java-->jar file即可
而如果是要打成可以运行的应该程序包,那要就要在包里加入运行的主程序切入口,即main主函数,安装文件会将 .jar 文件映射给 javaw.exe 打开。
这种方法是:
工程上点右键export-->java-->Runnable jar file-->Launch configuration 里选个 Main函数-->Export destination 里选择一个要导出的位置-->Library handing 里选择 Extract rquired libraries into generated jar 这样可以把导久的jar 包一起打到同一个包里 -->finish 完成打包。
2、手动用jvm 打包
这种方法要注意的是:里面要包含一个文件 MANIFEST.MF,这个文件描述了该Jar文件的很多信息
主要要用:
Manifest-Version: 1.0
用来定义manifest文件的版本
Class-Path
应用程序或者类装载器使用该值来构建内部的类搜索路径
Main-Class
定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。
例如我的MANIFEST.MF文件:
Manifest-Version: 1.0
Created-By: 1.5.0_08 (Sun Microsystems Inc.)
Main-Class: com.test.jfram.Main
Class-Path: lib/jxl.jar lib/poi.jar
注意每个:号之后有一个空格
最后把这个文件同那些要打包的jar文档, .class文件放在同一个 test 文件夹里就可以了。
打包的命令:
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%)