java -cp 打包,java运行和jar打包命令的细节

最近搞maven插件打包什么的,关于怎么把第三方jar包打进jar里,搞得很晕,于是乎干脆回归本源,研究下最朴素的如何使用jar命令来做这事;

一、先说运行,可以选择java -jar 或者 java -cp

如果是jar包中包含了定义入口的清单文件,那首选使用java -jar

如果没有定义入口清单,并且多个jar联合运行,那么使用java -cp来指定 classpath路径或者jar文件, 并在后面跟着入口类参数。

1、如果是引入多个路径,  -cp后,多个路径用:分割(linux平台),最后一个路径后面": "分割参数和主类名(可选)例如:

java -cp /path1/1.jar:/path2/2.jar: MainClass

2、如果是class文件,只要指定路径,例如:

java -cp /classpass1 MainClass

3、如果是jar包,那么需要指明jar名,或者干脆 *号,例如

java -cp /path1/1.jar:/path2/* MainClass

4、当然也可以混合,class文件和jar包都出现在cp参数中,例如:

java -cp /p1/1.jar:/p2 MainClass

二、再说打包

首先jar包其实本质就是符合规范的zip文件,可以用zip软件解压,甚至可以修改后重新用zip打包;

常用固定命令 打包(c)、查看(t)、解压(x)

常用参数 v,显示动作的详情

常用参数f,指定jar包名字

可选参数 m,指定读取自定义的清单,并写入META-INF/MANIFEST.MF

可选参数 e,在命令行指定入口,但如果同时使用了 m参数,并且manifest中有Main-Class,那会报错;

可选参数 C, 进入指定目录执行资源打包,有些类似于 cd这个目录,这样就不会把这个目录本身打进去,比较方便;

至于最后的files ,可以为一个个的class文件, 也可以是一个目录, 比如就是 . ,配合-C,就相当于把-C指定目录u的东西都打进去;

打包举例:

在classes目录中,放入编译好的App.class,在其中建立lib目录,放入需要的外部jar包,people.jar;

清单文件

Manifest-Version: 1.0

Main-Class: App

Class-Path: lib/people.jar

命名为mymanifest

开始打包

jar cvfm App.jar mymanifest -C classes .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值