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 清单文件
-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数
-0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快
[jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数
[manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数
[-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。
文件名 ... 指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。
在不指定-m 或-M的情况下jar 会默认带上-m参数 此时如果没有指定manifast文件或者manifast文件中没有指定main函数位置怎运行打包后的jar文件时会报Failed to load Main-Class manifest attribute 的错误
此时需要创建一个普通的文本文件 在文件中加入"Main-Class: test.Test <回车>" 并在命令中指定该文件为manifest文件(参数[manifest-文件])
test.Test为包含main函数的完整类路径
完了记得要加上一个回车如果没有回车jar不会把manifast中指定的main函数类路径信息加入到META-INF/MANIFEST.MF中
这样就可以通过 "java -jar jar包" 运行该java程序了
也可以通过 "java -cp jar包 main函数完整类全名" 运行.
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 清单文件
-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数
-0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快
[jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数
[manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数
[-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。
文件名 ... 指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。
在不指定-m 或-M的情况下jar 会默认带上-m参数 此时如果没有指定manifast文件或者manifast文件中没有指定main函数位置怎运行打包后的jar文件时会报Failed to load Main-Class manifest attribute 的错误
此时需要创建一个普通的文本文件 在文件中加入"Main-Class: test.Test <回车>" 并在命令中指定该文件为manifest文件(参数[manifest-文件])
test.Test为包含main函数的完整类路径
完了记得要加上一个回车如果没有回车jar不会把manifast中指定的main函数类路径信息加入到META-INF/MANIFEST.MF中
这样就可以通过 "java -jar jar包" 运行该java程序了
也可以通过 "java -cp jar包 main函数完整类全名" 运行.