jar命令打包

#1 你写了一个HelloWorld.java
内容
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, China");
}

}


#2 你用javac HelloWorld.java 编译生成HelloWorld.class 文件

#3 你执行了>java HelloWorld 输出结果:
F:\xxx>java HelloWorld
Hello, China


#4 用jar打包:网上说需要个文件(文件名可以随意)定义Main-Class,定义个文件hello,内容为:Main-Class:HelloWorld,这个时候,你估计还知道要回车,空一空白行:

Main-Class:HelloWorld


执行jar命令:

jar -cvfm xx.jar hello HelloWorld.class

你得到如下的错误:
[quote]
F:\xxx>jar -cvfm xx.jar hello HelloWorld.class
java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:410)
at java.util.jar.Manifest.read(Manifest.java:199)
at java.util.jar.Manifest.<init>(Manifest.java:69)
at sun.tools.jar.Main.run(Main.java:174)
at sun.tools.jar.Main.main(Main.java:1233)

[/quote]
原因:清单文件不对,根源是用了参数-cvfm,其中m: -m 包含指定清单文件中的清单信息
去掉m参数执行:

jar -cvf xx.jar hello HelloWorld.class

得到结果:
[quote]
F:\xxx>jar -cvf xx.jar hello HelloWorld.class
已添加清单
正在添加: hello(输入 = 23) (输出 = 25)(压缩了 -8%)
正在添加: HelloWorld.class(输入 = 426) (输出 = 290)(压缩了 31%)
[/quote]

#5 执行命令:java -jar xx.jar
结果:
[quote]
F:\xxx>java -jar xx.jar
xx.jar中没有主清单属性
[/quote]
好了,你去打开xx.jar,修改里面的MANIFEST.MF文件。
添加:Main-Class:HelloWorld到文件中,回车换行,保存。
再次执行:java -jar xx.jar
结果:
[quote]
F:\xxx>java -jar xx.jar
Error: Invalid or corrupt jarfile xx.jar
[/quote]
说jar无效。
找原因,再次看到有人提起:Main-Class:之后要空格,于是加上

Manifest-Version: 1.0
Created-By: 1.8.0 (Oracle Corporation)
Main-Class: HelloWorld




保存之后,执行
>java -jar xx.jar
结果:

F:\xxx>java -jar xx.jar
Hello, China


成功了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值