Java_Jar_命令的使用

本文详细介绍了在Windows环境下制作并运行JAR文件时遇到的常见问题,包括正确设置manifest文件和避免报错的方法。通过提供一个实际的测试例子,帮助开发者快速定位和解决打包和运行过程中可能出现的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章:

http://caterpillar.onlyfun.net/Gossip/JavaEssence/SourceClassInJAR.html

http://caterpillar.onlyfun.net/Gossip/JavaGossip-V2/ExecutableJAR.htm

 

补充:

如果在windows下调试,制作manifest 文件需要注意两个地方:

1. 行尾必须有一个回车换行符

2. Main-Class:后加入1个空格然后再加入自己的Main_Class完整名称

否则报错:

D:\workplace\Test>jar cvfm test.jar mymanifest.txt -C %PJ%\bin com
java.io.IOException: invalid header field
        at java.util.jar.Attributes.read(Attributes.java:393)
        at java.util.jar.Manifest.read(Manifest.java:167)
        at java.util.jar.Manifest.<init>(Manifest.java:52)
        at sun.tools.jar.Main.run(Main.java:123)
        at sun.tools.jar.Main.main(Main.java:903)

 

这个浪费我一个小时,呵呵,以后估计老师会把这个提示加上去了(已经发了email)。

 

另外附上自己的测试例子:

/*
set PJ=D:\workplace\Test
d:
cd %PJ%
mkdir %PJ%\bin
cd src/com/june/study/main
javac -sourcepath %PJ%\src -d %PJ%\bin Hello.java
cd %PJ%\bin
java com.june.study.main.Hello

cd ..
jar cvf test.jar -C %PJ%\bin com

java -cp test.jar com.june.study.main.Hello


notepad manifest.txt
input:Main-Class: com.june.study.main.Hello
jar cvfm test.jar manifest.txt -C %PJ%\bin com
*/

package com.june.study.main;

import com.june.study.message.Message;

public class Hello {

    public static void main(String[] args) {
        Message msg1 = new Message("msg1");
        Message msg2 = new Message("msg2");
        System.out.println("msg1:" + msg1.getMsg());
        System.out.println("msg2:" + msg2.getMsg());
    }
}

package com.june.study.message;

public class Message {
    private String msg;

    public Message(String msg) {
        this.msg = msg;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值