java应用程序打包

来源:互联网 发布:java程序员培训机构 编辑:程序博客网 时间:2024/05/16 23:37
   当发布一个应用程序时,并不希望部署大量的类文件。类似于applet,应该把程序需要的相关类文件和其他资源文件打包成一个jar文件。一旦将程序打包后,就可以通过一个简单命令加载它,如果正确地配置了操作系统,就可以通过双击jar文件来加载。1 清单文件    可以把应用程序、程序组件和代码库打包到jar文件中。例如,JDK的运行库就包含在一个很大的文件rt.jar中。    jar文件是一个简单的ZIP文件,它包含类文件、程序需要的其他文件以及描述存档特性的清单文件(manifest)。    清单文件被命名为MANIFEST.MF,它在jar文件的一个特殊META-INF子目录下面。最小的符合标准的清单文件是很简单的:    Mainfest-Version: 1.0    复杂的清单文件可以包含更多条目。这些清单条目被分成多个节。第一部分称为主节(main section)。它作用于整个JAR文件。后续的条目同来指定已命名条目的属性,这些已命名的条目可以是某个文件、包或者URL。它们都必须以名为Name的条目开头。节与节之间用空行分开。例如:    Manifest-Version:1.0    描述这个归档文件的行    Name:XXX.class    描述这个文件的行    Name:com/mycompany/mypkg/    描述这个包的行    要想编辑清单文件,则需要将希望添加到清单文件中的行放到文本文件中,然后运行下列命令:    jar cfm xxx.jar manifest.mf...    例如,要想创建一个具有清单的jar文件,运行下列命令:    jar cfm xxx.jar manifest.mf 指定目录/*.class    要想为一个已存在的jar文件的清单增加条目,需要将增加的部分放置到文本文件中,然后执行以下命令:    jar ufm xxx.jar manifest-additions.mf2 自运行JAR文件    要想打包一个应用程序,就应该将应用程序需要的所有文件放置到一个JAR文件中,然后在清单文件中增加一项指定程序的主类(main class)——该类一般需要调用java程序启动器指定的类。    创建一个名为mainclass.mf的文件,其中包含下面一行:    Main-Class:所在目录名/MainAppClass    不要将扩展名.class增加到主类名中。然后运行jar命令:    jar cvfm XXX.jar mainclass.mf files to add    用户可以简单地通过下面命令来启动应用程序:    java -jar XXX.jar    根据操作系统的配置,可以通过双击jar文件图标来启动应用程序。    ·在Windos平台,Java运行时安装器建立扩展名为.jar的文件与javaw -jar命      令相关联来启动文件。    ·在Solaris平台,操作系统能够识别jar文件的格式并用java -jar命令来运行      它。    ·在Mac OS X平台,操作系统可以识别.jar文件扩展名,当双击JAR文件时就可      以运行Java程序。而且,MRJAppBuilder的打包工具允许把JAR文件转换为一       个顶级的、可双击的、具有定制的类路径、图标等的Mac程序。3 资源    应用程序中使用的类通常使用一些相关的数据文件,例如:    ·图像和声音文件。    ·带有消息字符串和按钮标签的文本文件。    ·二进制数据文件,例如,描述地图布局的文件。    在Java中,这些关联的文件称为资源(resource)。    类加载器知道如何搜索类文件,只要它被放置到类路径、存档文件或Web服务器上。利用资源机制,对于非类文件也可以同样方便地操作。下面是必要的步骤:    1) 获得具有资源的Class对象。    2) 调用getresource(filename)来获取作为URL的资源的位置。    3) 如果资源是图像或音频文件,可以使用getImage或getAudioClip方法直接读取。    4) 否则,通过URL调用openStream方法读取文件中的数据。4 密封    可以将java语言包密封,以保证其他类不能加入到其中。如果在代码中使用可见的类、方法和域,那么可能希望对包密封。    例如,如果密封了com.mycompany.util包,那么就不能用下面的语句定义密封包外的类:    package com.mycompany.util;    要实现这点,需要把包中所有的类放到一个JAR文件中。在默认情况下,JAR文件中的包是没有密封的。可以在清单文件的主节中加入下面一行:    Sealed:true来改变全局默认的设定。对于每个单独的包,通过在JAR文件清单中增加一节,可以指定是否密封该包。例如:    Name:com/mycompany/util/    Sealed:true    Name:com/mycompany/misc/    Sealed:false    要密封一个包,应创建一个包含清单文件指令的文本文件。然后使用通常的方法运行jar命令:    jar cvfm XXX.jar manifest files to add

原创粉丝点击