当前位置:  技术问答>java相关

jar 的实用问题

    来源: 互联网  发布时间:2017-03-11

    本文导语:  目录结构: D:/ ejbpro/ myFirst.class myFirstBean.class myFirstHome.class META-INF/   ejb-jar.xml MANIFEST.MF(这个文件是手工编写的) weblogic-ejb-jar.xml 问题: 如何用jar 打包,并且使用现有的 MANIFEST.MF | 意思就是要把两个目...

目录结构:
D:/
ejbpro/
myFirst.class
myFirstBean.class
myFirstHome.class

META-INF/  
ejb-jar.xml
MANIFEST.MF(这个文件是手工编写的)
weblogic-ejb-jar.xml

问题:
如何用jar 打包,并且使用现有的 MANIFEST.MF

|
意思就是要把两个目录里的文件都打在一个包里了,那么:
将MANIFEST.MF备份,然后:
D:>jar cf test.jar  /ejbpro/*.*  /META-INF/*.*
用rar查看,打开MANIFEST.MF,将你的内容考进去,保存,一切ok

这是经过我的实践的,个人认为这样是最简单快捷的了.

|
我说的方法不是正规,但是最简单:

你就把它打成.zip文件,然后改名字就行了。用不着想jar的那些希奇古怪的用法。其实jar的格式就和zip一样的(至少我在用的过程中都这样用。)

|
jar命令详解 
***************************** 
看.jar文件用winzip或winRAR等解压缩工具就可以了 
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 文件了

    
 
 

您可能感兴趣的文章:

  • jar的问题
  • 请问各位大侠一个关于jar命令问题
  • 请教:关于jar路径读取的问题???
  • 执行Jar文件的一个问题
  • 菜鸟问题,怎么引入.jar包?然后生成对象??
  • 高分求救!jar文件直接双击运行的问题!
  • 关于jar打包的问题。
  • 急!!关于调用 jar文件的问题
  • jar打包的问题
  • jsp文件访问jar文件,路径问题。
  • 关于jar包的问题!
  • jar打包后的问题。
  • Jar 无法下载的问题,在线急等......
  • 使用自定义.jar压缩文档的问题!
  • 用jar打包的小问题,解决力送100分!!!
  • jbuilder中加载SmartUpload.jar的问题。。。
  • java DocConverter.jar转换word文档到pdf 中文乱码问题
  • jar问题
  • 关于application包example.jar执行时的问题
  • 关于class打成jar包后,app访问路径问题,大家来讨论!给分!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util.jar类jarinputstream的类成员方法: createzipentry定义及介绍
  • 请问怎么用jar命令生成可以执行(java -jar mm.jar)的jar文件?
  • java命名空间java.util.jar类jarfile的类成员方法: jarfile定义及介绍
  • 如何使用jar命令将一个目录打包为同名jar文件?
  • java命名空间java.util.jar类jarfile的类成员方法: getjarentry定义及介绍
  • 怎样用java的jar命令解开*.jar文件??急!!!!
  • java命名空间java.util.jar类jarentry的类成员方法: endcom定义及介绍
  • java -jar a.jar这些进程怎么杀啊?
  • java命名空间java.util.jar类attributes.name的类成员方法: main_class定义及介绍
  • 一个双击便能执行的jar文件与一般的JAR文件有什么区别
  • java命名空间java.util.jar类jarinputstream的类成员方法: getnextjarentry定义及介绍
  • 怎样打包jar,能使生成的jar文件双击后执行该程序?
  • java命名空间java.util.jar类jarfile的类成员方法: manifest_name定义及介绍
  • 为什么我不能使用java -jar orion.jar -install
  • java命名空间java.util.jar类jarentry的类成员方法: exthdr定义及介绍
  • 多个jar文件如何打包成一个jar
  • java命名空间java.util.jar类jarentry的类成员方法: locnam定义及介绍
  • android导入第三方jar包报错 如何正确导入jar包
  • java命名空间java.util.jar类jarentry的类成员方法: extlen定义及介绍
  • 新人报到:请问如何用jar解开一个*.jar文件
  • java命名空间java.util.jar类jarentry的类成员方法: cenlen定义及介绍
  • .jar文件是怎么回事,如何制作.jar文件?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3