博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java jar打包总结(二)
阅读量:5962 次
发布时间:2019-06-19

本文共 2162 字,大约阅读时间需要 7 分钟。

前言

昨天总结了使用,今天说一下命令行下使用jar命令进行打包。

在命令行下打包jar需要比使用eclipse这些成熟的工具更需要注意一些东西,但打包jar和使用jar总体来说都不算太复杂,下面慢慢讲述。


jar命令的基本格式

在命令行中输入jar,查看jar命令的基本格式。

用法: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...选项:    -c  创建新档案    -t  列出档案目录    -x  从档案中提取指定的 (或所有) 文件    -u  更新现有档案    -v  在标准输出中生成详细输出    -f  指定档案文件名    -m  包含指定清单文件中的清单信息    -n  创建新档案后执行 Pack200 规范化    -e  为绑定到可执行 jar 文件的独立应用程序        指定应用程序入口点    -0  仅存储; 不使用任何 ZIP 压缩    -M  不创建条目的清单文件    -i  为指定的 jar 文件生成索引信息    -C  更改为指定的目录并包含以下文件如果任何文件为目录, 则对其进行递归处理。清单文件名, 档案文件名和入口点名称的指定顺序与 'm', 'f' 和 'e' 标记的指定顺序相同。

{}内的ctxui是必需参数,其后的参数是可选参数,由其自身的提示可知,清单文件(manifest-file),档案文件(jar-file),入口点(entry-point)分别要对应你参数选择时m,f,e对应的位置

比如说,你的命令是jar cfm var1 var2那么var1对应的就是参数f,需要你打包后jar文件的名字 var2就是指清单文件对应参数m。

这个清单文件的作用类似于起到了配置的作用,如果你打开过jar文件的内容后,你会发现在里面有一个文件夹META-INF,在其中就是这个清单文件。

用记事本打开该文件,你会发现只有一行的

Manifest-Version: 1.0

这是由于你创建时,没有指定manifest而由java自动生成的。如果需要指定manifest,则可以创建一个menifest文件,注意没有后缀哦。

可以填写的选择有

Manifest-Version: 1.0  Created-By: fat-rabbit Class-Path: .  Main-Class: Main  说明:  第一行指定清单的版本,若无,则JDK默认生成:Manifest-Version: 1.0。  第二行指明创建的作者,若无,则JDK默认生成Created-By: 1.6.0_22(Sun Microsystems Inc.)。  第三行指定主类所在类路径。  第四行指明程序运行的主类。构建可执行jar文件的需要填写。  注意在末尾有一个空行。

在命令行下使用jar命令进行打包

一般来说,在命令行下进行打包的命令基础的无非两种。

一种是无指定manifest文件

jar cvf classes.jar Foo.class Bar.class//将Foo.class和Bar.class 打包成classer.jar文件,并在在标准输出中生成详细输出jar cvf classes.jar -C foo/ .//将 foo/ 目录中的所有文件归档到 classes.jar 中,并在在标准输出中生成详细输出

另一种是指定了manifest文件

jar cvfm classes.jar mymanifest Foo.class Bar.class// 将Foo.class和Bar.class 打包成classer.jar文件,// 并在在标准输出中生成详细输出,以及使用指定好的mymanifest文件jar cvfm classes.jar -C foo/ .// 将 foo/ 目录中的所有文件归档到 classes.jar 中,// 并在在标准输出中生成详细输出,以及使用指定好的mymanifest文件

其余的参数可以按需组合,这里不一一解说。

在命令行下编译带有第三方jar的java文件

如果直接编译带有第三方jar的java文件会提示找不到程序包。

这时则需要使用-cp命令将jar文件添加进classpath里,多个程序包用 ; 隔开(传完呢linux下是冒号,我没试过)。即:

javac -cp aaa\A.jar;bbb\B.jar yourJavaName.java//补充一点,若A只是一个目录,则只需javac -cp aaa yourJavaName.java即可

总结

这两篇文章总结的可以完成一些普通的打包工作了,如果需要更复杂的打包,可以翻阅专业的资料,jar打包和python打包不同,因为其应用场合的关系,python少有打包成exe发布,虽然sublime-Text是用python写的,但更多时候python是用作服务端的一些工作,而java的各种应用场合都几乎需要用到jar打包技术,所以建议和我一样的新人要对其有一定的认识。

文章中若有错误,欢迎指正

最后推荐几篇文章

转载地址:http://wznax.baihongyu.com/

你可能感兴趣的文章
解酒方法
查看>>
vi 命令
查看>>
1.1
查看>>
[logstash-input-redis]插件使用详解
查看>>
优化应用的电池寿命(笔记)-1
查看>>
SSH Secure Shell Client
查看>>
JFinal源码分析------初始化那些事儿
查看>>
处理 允许远程协助连接这台计算机 灰色
查看>>
使用Jquery 加载页面时调用JS
查看>>
css+div+jquery弹出层
查看>>
求职相关(链接,不定期更新)
查看>>
pdo 连接数据库 报错 could not find driver 解决方法
查看>>
设计模式之策略模式
查看>>
JVM介绍
查看>>
Qt中使用QToolBox实现抽屉效果
查看>>
双活数据中心建设之光大实践
查看>>
张军-大数据的理解与分布式进化计算方法
查看>>
dubbo remoting(2)
查看>>
maya pyside 多个窗口实例 报错 解决
查看>>
关于文件上传请求第一次为post,后面为get的问题
查看>>