使用CMD命令行打 jar包

背景:

最近看packetNg 打包插件,遇到一个问题,编码的问题导致打出来的渠道包,乱码问题,虽然已经解决了,但是还是想吧过程分享一下

有几个重点:
1. DOS 窗口 Java -jar 打jar包命令
2. 如果要直接运行jar 包中的类,需要自行修改META-INF中 MF 文件内容(修改MF 文件需要符合MF 文件的格式 需要在最后空两行否则出现异常 没有找到主类),当然网上很多都是二次打包,而且容易出错,有一种直接可以指定MAIN-CLASS 的方法。
jar cvfe hello.jar HelloWorld *

e 可以指定入口函数
* 当前目录下所有class文件

使用Dos命令打包遇到的坑:

  1. 找不到主类 (MF 修改不符合规范,或者MF中没有指定主类)
  2. Jni 异常 (这个没有找到原,后面会介绍规避方式)
  3. 不能访问类 (访问路径不对)
  4. Main 主类传值方式 (args可以接受一串参数,只要紧接着传值就可以了)

以上就是遇到的坑

最后使用Eclipse 进行 导出jar包,进行对比发现,使用dos 打的jar 和使用 Eclipse导出包生成的文件有些不同。

这里写图片描述

使用dos打包进行运行就会报异常找不到$之后的类(应该是内部类)

下面是使用eclipse 生的jar进行命令行打包结果(我的本意是对PackerNg进行优化研究)

这里写图片描述

异常列表

1.
这里写图片描述

2.
这里写图片描述

3.
这里写图片描述

Dos命令

jar cvfe hello.jar HelloWorld * 打jar包并且指定主类 HelloWorld

java –jar xxxx.jar //运行指定的jar包中的已经指定的主类,当然可以传递参数或者不传递参数

引用:

  1. http://blog.csdn.net/peerlessbloom/article/details/7039978 传参到主类
  2. http://blog.csdn.net/wangpeng047/article/details/7176024 打jar包
  3. http://www.cnblogs.com/bluestorm/archive/2012/09/24/2700486.html 打包
  4. https://github.com/mcxiaoke/packer-ng-plugin/blob/master/helper/src/main/java/com/mcxiaoke/packer/helper/PackerNg.java 测试的类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灯塔@kuaidao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值