第十章 部署应用程序和applet

第十章 部署应用程序和applet

10.1 jar文件

    jar既可包含类文件,也可以包含诸如图像声音等其他类型文件,jar文件是采用ZIP格式压缩的。

    创建格式:

jar cvf JARFileName File1 File2 ...

    例如:

jar cvf CalculatorClasses.jar *.class icon.gif

     jar 命令格式:

jar options File1 File2 ...

    选项:

101526_hVrs_1982585.png

 10.1.1 清单文件

    每个JAR文件包含一个用于描叙归档特征的清单文件(manifest)

    清单文件名:MANIFEST.MF,位于JAR文件一个特殊META-INF子目录中。

    清单条目被分成多个节。第一节为主节(main section).作用于整个JAR文件。随后的条目用来指定已命条目属性,这些已命名条目可以是某个文件,包或URL。必须起始于名为Name的条目。节与节之间用空行分割。如:

ManiFest-Version:1.0
描叙这个归档文件的行

Name:Wcozle.class
描述这个文件的行

Name:com/mycompany/mypkg/
描述这个包的行

    想要编辑清单文件,需要将希望添加到清单文件中的行放到文本文件中,运行:

jar cfm JARFileName ManifestFileName ...

    例如:

jar ufm MyArchive.jar manifest.mf com/mycompany/mypkg/*.class

    更多参看http://java.sun.com/javase/6/docs/technotes/guides/jar.


10.1.2 可运行JAR文件

    Java SE6中,可用jar命令的e 选项指定程序的条目点,即通常需要在调用Java程序加载器时指定的类:

jar cvfe MyProgram.jar com.mycompany.mypkg.MainAppClass files to add

    用户可简单的启动应用程序:

java -jar MyProgram.jar

    在旧的JDK中,必须指定应用程序主类:

Main-Class: com.mycompany.mypkg.MainAppClass

    不要将扩展名.class添加到主类名中。然后运行:

jar cvfm MyProgram.jar mainclass.mf files to add

       注意:清单文件最后一行必须以换行符结束。

10.1.3 资源

    一些相关数据文件如:

  • 图像和声音文件

  • 带有消息字符串和按钮标签的文本文件

  • 二进制数据文件

    类加载器知道如何搜索类文件,直到在类路径、存档文件、或Web服务器上找到为止,利用资源机制,对非类文件也可以同样方便地操作。必要步骤如下:

  • 获得具有资源的Class对象,例如AboutPane.class

  • 如果是图像或声音,需要调用getresource(filename)获得URL资源位置,再利用getImage或getAudioClip读取

  • 其他资源可用getResourceAsStream读取文件中的数据

    重点在于类加载器可以记住如何定位类,然后在同一位置查找关联资源

    如图片:

URL url = ResourceTest.class.getResource("about.gif");
Image image = Tookit.getDefualtTookit().getImage(url);

    在找到ResourceTest类的地方,然后在同位置查找关联资源。

    如文件:

ImputStream stream = ResourceTest.class.getResourceAsStream("about.txt");
Scanner in = new Scanner(stream);

    除了可以将资源文件和类文件放在同一目录外,还可以将它放在子目录中。可使用层级资源名:data/text/about.txt.这是一个相对资源名,他会被解释为相对于加载这个资源的类所在的包。而以"/"开头的,如:/corejava/titile.txt.定位于corejava目录下(他可能是类路径的一个子目录,也可能位于JAR文件中,对applet在web服务器上).

    

10.4 应用程序存储的配置

10.4.1 属性映射

    属性映射:存储键/值对的数据结构。用来存放配置信息。三个特性:

  • 键和值都是字符串

  • 键/值对可以很容易地写入文件或从文件读出

  • 用二级表存放默认值

    实现属性映射的类为Properties。如:

Properties settings = new Properties();
settings.put("width","200");
settings.put("title","Hello world");

    可用store将这个属性映射列表保存到文件。在这里将属性映射保存在Myprog.properties文件中。

FileOutputStream out = new FileOutputStream("program.properties");
settings.store(out,"Program Properties"); //第二个参数为这个文件的注

    从文件加载这些属性:

FileInputStream in = new FileInputStream("program.properties");
settings.load(in);

    习惯将属性存储在用户主目录的某个子目录下。查看用户主目录调用System.getProperties方法。 还可以使用Properties对象描述系统信息。主目录包含键user.home。一个很有用的方法,读取单键:

String userDir = System.getProperties("user.name");

    一旦用户手工的编辑文件,为应用程序提供 默认值就是一种很好的想法。Properties类有两种提供默认值的机制。第一种是在试图获得字符串值是指定默认值。当键值不存在时,就会自动的使用它。

String title = settings.getProperties("title","Defualt title");

    如果属性映射中有title属性,则title设置成字符串,否则,title将设置成Default title。

    如果觉得每次调用getProperties指定默认值太麻烦,可将所有默认值放在一个二级属性映射中,并在主属性映射的构造器中提供映射。且用它来够造查询表。

Properties defaultSettings = new Properties();
defaultSettings.put("width","300");
defaultSettings.put("height","200");
defaultSettings.put("title","Default title");
...
Properties settings = new Properties(defaultSettings);


10.4.2 Preferences API

    属性文件的不足:

  • 配置文件不能存放在用户的主目录中。(有些操作系统没有主目录的概念)

  • 没有标准的为配置文件命名的规则。用户安装多个Java应用程序,会增加配置文件的冲突。





转载于:https://my.oschina.net/liuyang2077/blog/502879

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值