将应用程序分发为可执行JAR文件
JAR(Java ARchive)是一种将与程序关联的所有资源(类文件,图像,声音等)打包在一起的方法。将您的程序放在JAR中,可以将其作为单个可执行文件分发,从而节省了空间并简化了下载过程。本教程中的信息适用于Java 1.2或更高版本。
一个简单的例子。假设我们要将Hello.java(简单的程序)分发为JAR。首先,我们创建一个名为Hello.mfManifest-Version: 1.0
Main-Class: Hello
然后,通过键入以下命令创建归档文件:jar cmf Hello.mf Hello.jar Hello.class Hello.java
键入以下命令运行它:java -jar Hello.jar
现在可以下载,并执行文件Hello.jar。
创建可执行JAR文件,以下是创建可执行JAR的一般过程:
编译java代码,生成Program Files的所有类
创建包含以下两行的清单文件:
Manifest-Version: 1.0
Main-Class: name of class containing main文件的名称应以.mf后缀,文件以空行结尾很重要
要创建JAR,请键入以下命令:
jar cmf manifest-file jar-file input-files的输入文件必须包括程序使用的类文件,图像,声音,等等,您可以在JAR中包含该程序的.java文件。请参见下面的添加JAR中的目录
要查看JAR的内容,请键入:
jar tf jar-file
通过键入以下命令从命令行执行应用程序:
java -jar jar-file如果应用程序是基于GUI的,则还可以通过双击JAR文件来启动它。
访问JAR中的资源,通常,访问JAR资源的第一步是创建一个URL,这需要修改程序。例如,您不能再使用以下代码片段读取存储在文件中的图像,如下所示Image image = Toolkit.getDefaultToolkit().getImage(filename);
相反,创建统一资源定位地址使用的对象URL url = getClass.getResource(filename);
Image image = Toolkit.getDefaultToolkit().getImage(url);
或者,如果代码在类的静态方法中URL url = X.class.getResource(filename);
现在,不管资源是在JAR还是当前目录中,都可以以相同的方式访问资源,
JAR子目录。 JAR格式还支持将文件存储在目录结构中。考虑一个程序Sample.java,它使用Turtle Graphics界面显示图片的集合,这些图片存储在一个名为images的子目录中。我们的工作目录如下:
Manifest:Manifest-Version: 1.0
Main-Class: Sample
要创建JAR,请键入:jar cmf Sample.mf Sample.jar Sample.class Turtle.class Sample.java Turtle.java images
内容列表显示为:META-INF/
META-INF/MANIFEST.MF
Sample.class
Turtle.class
Sample.java
Turtle.java
images/
images/image1.gif
images/image2.gif
images/image3.gif
请注意,目录结构仍然保留(创建META-INF目录以保存清单和有关JAR的其他常规信息)。