jar文件包与jar命令
JAR(Java Archive File)包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包,准确的说,它就是 ZIP 文件,所以叫它文件包。当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当生成JAR包时,它会自动生成。
制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法。
Java 程序是由若干个 .class 文件组成的。这些.class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。
其实不然,如果开发者能够制作一个可执行的 JAR 文件包交给用户,那么用户使用起来就方便了。在 Windows 下安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给javaw.exe 打开。那么,对于一个可执行的 JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便 (.chm 文档默认是由 hh.exe 打开的)。那么,现在的关键,就是如何来创建这个可执行的 JAR 文件包。
JAR包是由JDK安装目录\bin\jar.exe命令生成的(jar是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows下文件名为 jar.exe,Linux 下文件名为jar),当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令,它会用lib\tool.jar工具包中的类。
jar命令格式:jar{ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名…
其中{ctxu}这四个参数必须选选其一。[v f m 0 M i ]是可选参数,文件名也是必须的。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 更新已存在的 JAR 文件包 (添加文件到JAR 文件包中)
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
[jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是-f 参数的附属参数
[manifest-文件] 即 MANIFEST 清单文件,它是-m 参数的附属参数
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令,它只能在创建和更新 JAR 文件包的时候可用
文件名 ... 指定一个文件/目录列表,这些文件/目录就是要添加到JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。
有些 Linux 下提供了 unzip 命令,但没有 zip 命令,所以需要可以对 ZIP 文件进行解压,即不能创建 ZIP 文件。如要创建一个 ZIP 文件,使用带 -M 参数的 jar 命令即可,因为 -M 参数表示制作 JAR 包的时候不添加 MANIFEST 清单,那么只需要在指定目标 JAR 文件的地方将 .jar 扩展名改为 .zip 扩展名,创建的就是一个不折不扣的 ZIP 文件了。
java jar 打包命令
- 打包根目录下面的文件:
jar cvf filename.jar a.class b.class
- 打包带package的文件:
jarcvf filename.jar foldername
或者
jar cvf filename.jar foldername\*
- 打包可执行jar包:
先配置manifest.mf文件,内容如下
1. Main-Class: com.TestBean
2. Class-Path: lib\classes12.jar
Main-Class: com.TestBean
指定入口函数,说明默认执行com.TestBean的main函数。
Class-Path: lib\classes12.jar
配置依赖jar包
jar cvfm filename.jar manifest.mf *.class lib\classes12.jar
- 执行方法:
java -jar filename.jar
修改jar包
- 使用解压缩工具打开直接修改保存压缩包(修改.MF文件,删除不需要的.class文件,增加/替换新.class文件)
- 使用jar命令解压,替换,重新打成jar
- 使用jar命令替换jar包中的文件
- 使用工具jclasslib修改(未亲测)
jar uvf test.jar test.class
这样会直接把test.class 直接添加到jar包的根目录。
jar uvf test.jar com/test/test.class
这样就可以替换相应目录的class文件了。
这里值得注意的是 test.class 必须放在com/test 文件下,要和jar的路径对应起来。不然会说
没有这个文件或目录。jar 包和 com 文件夹的上级在同一个目录。
jar umf MANIFEST.MF filename.jar
修改.MF文件
解压
jar xvf filename.ja
查看jar包文件结构
jar包文档注释
前提:java文档注释
- 文档生成:
Export(导出) -> java下的javadoc,
在Javadoc Generation对话框中有两个地方要注意的:
javadoc command:应该选择jdk的bin/javadoc.exe
destination:为生成文档的保存路径,可自由选择。
按finish(完成)提交即可开始生成文档。
导出的时候可能会出现因为乱码而导出失败,给 javadoc.exe 加上编码参数就OK。具体的:
在Eclipse里 export 选 JavaDoc,在向导的最后一页的Extra JavaDoc Options 里填上参数即可
比如项目采用的是UTF-8的编码就填:-encoding UTF-8 -charset UTF-8
- Eclipse中给jar包导入JavaDoc注释文档
jar包以生产注释文档
1.将jar加入到ReferencedLibraries
2.设置jar的java doc(Javadoc location)
3.Order and Export(调整引用库的优先级)
参考:
【1】JAR文件包及jar命令详解
http://www.fh888.com/sf_C31E462FF40045D0BF88926F9FE50C38_5_yhn.html
【2】把java文件打包成.jar (jar命令详解)
http://www.cnblogs.com/mq0036/p/3885399.html
【3】java jar 打包命令
http://lishumingwm163-com.iteye.com/blog/954061
【4】替换jar包指定的文件
http://blog.csdn.net/giianhui/article/details/10085145
【5】直接修改别人jar包里面的class文件工具:jclasslib
http://blog.csdn.net/hexin373/article/details/6669813
【6】Javadoc注释的用法
http://www.cnblogs.com/bluestorm/archive/2012/10/04/2711329.html
【7】Eclipse中 java 注释文档的生成方法
http://lufengdie.iteye.com/blog/905606
【8】Eclipse中给jar包导入JavaDoc注释文档的方法
https://my.oschina.net/u/1252704/blog/312462
博客内容仅作学习/交流/参考之用,欢迎大家交流探讨;E-Mail:bjwang2014@hotmail.com
如果内容信息侵犯了您的合法权益,请告知我,我将及时处理。
站在巨人的肩上才能看得更远,一步一个脚印才能走得更远。分享成长,交流进步,转载请注明出处!