有不少朋友问我怎么样生成jar文件,为什么我的jar文件可以双击执行,每次我都会解释,我生成的jar是在JBuilder中完成的,但仍有人希望知道如何使用命令行生成jar文件,因此,我特地抽点时间来整理一下jar的命令行用法。
JAR 是JavaTM Archive file的缩写,jar可将多个文件打包在一个文件中进行发布。通常,jar文件中会包含多个类文件和程序运行时所需要的资源文件,使用jar文件有以下好处:
安全:你可以对jar文件进行数字签名
压缩:jar格式可以减少程序的存储空间,这会提高网络传输的效率,至少,不需要建立多的连接就可以下载整个程序
打包:jar可以将一些常用的函数进行封装,然后提供给其它用户进行二次开发,比如说Java 3D和JavaMail
生成jar文件
在命令行下生成jar文件需要使用jar命令,在命令行方式下输入jar,可以看到:
jar的生成并不复杂,上面已经说得很清楚了,只不过需要注意的是,在生成jar文件后,需要注意包内的文件组织结构的正确性,以“连连看”游戏为例子,下载后的文件为Kyodai.jar,如果使用winrar等工具解开该文件,可以发现,其文件的组织结构为:
和我在写程序的时候的结构是一模一样的,现在,将解开的文件再生成jar文件,可以使用如下命令:
(以上去掉了参数v,.表示当前文件夹下的所有文件)
生成可执行的jar
上面,我们已经生成了jar,然而,该程序还无法通过双击执行,程序报错:
这是由于java并不知道在这个jar包中,需要执行的是哪一个class文件,因此,我们需要指定双击时执行的类文件哪个。
因此,我们再建立一个“MANIFEST.MF”,在里面写上如下内容:
第一行指明了该jar文件的版本号,第二行Main-Class表示可执行的类文件为kyodai.Kyodai(这和在命令行方式下使用 java kyodai.Kyodai执行该程序一样),然后,再建立一个META-INF文件夹,将MANIFEST.MF文件copy进去,最后,再将META-INF打包到该jar文件中,这样,一个可执行的jar文件就生成了。
常见问题
有些朋友由于在安装winrar等压缩软件时,jar文件会被其类程序所关联,因此,双击时并不会执行jar程序,而是调用此类软件来打开jar文件,碰到这种情况,将文件的关联去掉即可。