jar命令详解

jar命令

jar

  • c - 创建一个jar包
  • t - 列出jar包中的文件
  • x - 从jar包提取指定的(或全部的)文件
  • u - 向已存在的jar包中添加文件
  • f - 指定jar包的文件名
  • m - 从指定的manifest文件获取清单信息
  • e - 指定应用程序的入口(主类的完全限定名称),用于生成可执行jar包
  • 0 - 只归档,不压缩
  • M - 不创建清单文件(也就是“META-INF/MANIFEST.MF”)
  • i - 为指定的jar包生成索引文件(也就是“META-INF/INDEX.LIST”),比如 jar i test.jar
  • -C dir - 先cd到dir,再执行jar命令

1,如果指定了目录,那么会递归的处理
2,清单文件名、归档文件名(也就是jar包的名称)、入口点名称应该和m、f、e标记按照相同的次序指定

MANIFEST.MF

一个例子:

Manifest-Version: 1.0  
Main-Class: test.Main  
Class-Path: ./ ./lib/commons-collections-3.2.jar ./lib/commons-dbcp-1.2.2.jar  
  ./lib/commons-lang-2.3.jar ./lib/commons-logging-1.1.jar
  • Manifest-Version - MF文件的版本
  • Main-Class - 应用程序的入口也就是主类的完全限定名称
  • Class-Path - 应用程序或类加载器使用该值来构造内部的类搜索路径

MF文件格式的一些注意事项:

  • 每行最长72个字符,如果超出,则需要续行
  • 总是以Manifest-Version开头
  • 确认每行都以回车结束,否则该行将会被忽略
  • 如果Class-Path 中的存在路径,使用"/"分隔目录,与平台无关

关于Class-Path头:

  • 运行java命令时,如果使用了-jar选项,那么通过环境变量CLASSPATH 和 命令行指定的所有类搜索路径都会被JVM忽略
  • 在Class-Path头中只能指定jar包,指定的目录是无效的

在Class-Path的值包含多行时:

  • jar包之间用空格分隔
  • 每行的最后一个jar包的名称后不容许有空格
  • 除了第一行,每行的开头必须有不少于2个空格
  • 最后一行要回车换行,但不能有空格

感谢浏览tim chow的作品!

如果您喜欢,可以分享到: 更多

如果您有任何疑问或想要与tim chow进行交流

可点此给tim chow发信

如有问题,也可在下面留言: