使用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 测试的类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论

打赏作者

灯塔@kuaidao

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值