大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 制作 Executable JAR

撰写Java程序到这边,相信您一定会有所疑问的是,编出来的.class文件越来越多,难道要将这一堆.class文件直接给想要执行程序的人吗?在Windows下的话,有没有办法按一下文件,就可以执行程序呢?

当然,实际上要交付程序时,并不是给一堆.class文件,而是会将编译好的.class档包装为一个Java Archive File,也就是扩展名为.jar的文件,在JDK的bin目录下,附带有一个jar工具程序,您可以直接执行jar程序,看看它的提示讯息:
JAR

直接执行jar工具程序,提示讯息中已清楚的说明如何使用jar程序,在这边使用 文字编辑器制作 完成的文字编辑器为例,来示范如何将程序包装为.jar的文件,首先请建立一个jar目录,并在其下建立bin与classes目录,将您完成的文字编辑器程序放入classes中(包括包的数据夹结构),待会将会产生的.jar则将放入bin中。
准备制作JAR

接着开启文字模式,切换工作目录至jar目录下,然后键入以下的指令,表示将建立一个JNotePad.jar放到bin目录中,来源是classes中的文件,被放入的文件将以/作为.jar文件中的根目录:
制作JAR

接着您的bin目录中就会产生一个JNotePad.jar,要如何使用这个.jar文件呢?.jar文件中包括.class,基本上可以将.jar看作是一个特别的目录,所以要使用.jar文件中的.class文件时,基本上也是指定Classpath,例如:
java -cp ./bin/JNotePad.jar onlyfun.caterpillar.JNotePad

接着您的文字编辑器就会启动了,现在您不用将一堆.class文件交付出去,只要交付这个JNotePad.jar就可以了。

然而,真的要指定Classpath这么麻烦吗?其实还有更方便的做法,制作一个Executable Jar文件,指定读取.jar文件时要执行的Main-Class就可以了,这需要准备一个manifest.txt,当中写下:
MANIFEST

注意写完Main-Class之后,要按下Enter键新增一行,在Windows下这个动作是必要的,否则会发生无法读取Main-Class属性的错误。假设manifest.txt放在jar目录下,接着如下执行指令:
制作 Executable JAR

在.jar文件制作出来后,您可以在执行java时指定-jar参数,以及您的.jar文件,java程序会自动寻找Main-Class并执行,例如下达以下的指令:
java -jar bin/JNotePad.jar

接着您的文字编辑器就会启动了,如果您的作业系统是Windows,由于安装完JRE之后,会将.jar默认由javaw程序开启,所以您可以直接在JNotePad.jar文件上,使用滑鼠左键按两下直接开启程序来执行。