将应用程序分发为可执行JAR文件

・4 分钟阅读

将应用程序分发为可执行JAR文件

JAR(Java ARchive)是一种将与程序关联的所有资源(类文件,图像,声音等)打包在一起的方法。将您的程序放在JAR中,可以将其作为单个可执行文件分发,从而节省了空间并简化了下载过程。本教程中的信息适用于Java 1.2或更高版本。

一个简单的例子。假设我们要将Hello.java(简单的程序)分发为JAR。首先,我们创建一个名为Hello.mf

Manifest-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的其他常规信息)。

    Xn_warm profile image