【Java学习笔记】程序发布

本文详细介绍了Java JAR文件的创建、操作及签名方法,并解释了如何通过WebStart技术发布JAR文件。此外,还讨论了注释在Java中的应用。

1.要注意的条件 
1)合适版本的JRE已经安装 
2)完整的Class 
3)数据配置文件 
4)可执行命令 

2.JAR文件的基本操作
 
JAR文件实际是ZIP文件,用zip或者unzip就可以操作,但是JAR文件中含有特殊信息。jar命令是专门用来操作JAR文件的,它会自动生成一个叫做mantext的文件,保存有相关信息。 
例如: 
类Rivers 
public class Rivers { 
    public static void main(String arg[]) { 
        System.out.println(Mississippi.getName()); 
        System.out.println(Amazon.getName()); 
        System.out.println(Yukon.getName()); 
    } 

------------------------- 
类Mississippi 
public class Mississippi { 
    public static String getName() { 
        return("Mississippi"); 
    } 

--------------------------- 
类Amazon 
public class Amazon { 
    public static String getName() { 
        return("Amazon"); 
    } 

--------------------------- 
类Yukon 
public class Yukon { 
    public static String getName() { 
        return("Yukon"); 
    } 

创建mantext 
Main-Class:<空格>Rivers<回车> 
指定了主函数所在类。 
Class-Path:Burners.jar 
当这个JAR文件运行时Burners.jar文件中所有的Class都可用。 
然后使用命令创建JAR文件:jar cfm Wetlands.jar mantext *.class 
当然要是有子目录Image,则可以使用jar cfm Wetlands.jar mantext *.class image 
想将当前目录下面所有文件和子文件夹打成一个jar包,并且要求包中内容和当前目录中的相同,则 
jar cfM Wetlands.jar *.class -C images . 
若不想压缩打包,则使用 jar cfm0 Wetlands.jar mantext *.class 
你可以使用下列命令直接运行JAR文件:jave -jar Wetlands.jar 
显示JAR包,则使用jar tf Wetlands.jar 或者jar tvf Wetlands.jar 

3.JAR文件的电子签名
 
私钥加密,公钥解密,主要用于电子认证。本地文件keystore保存了签名的相关信息。alias指定了证书的名字。 
创建密钥对: 
keytool -genkeypair -keystore .keystore -alias moosebreath -validity 3650 
(十年内有效) 
签署JAVA程序: 
jarsigner -keystore .keystore Wetlands.jar moosebreath 
检验是否签署: 
jarsigner -certs -verify Wetlands.jar 

4.Web Start发布
 
1)配置web服务器:打开Apache的配置文件httpd.conf,找到AddType添加如下一行:AddType application/x-java-jnlp-file .jnlp 
2)将程序打JAR包 
3)创建JNLP文件——JNLP应用程序能使应用程序像标准的Java   applets一样通过Web浏览器访问,并且在客户主机上JNLP可以限制为一个安全的“沙盒(sandbox)”。不像applets,JNLP应用程序不运行在客户的浏览器内部;相反,Web浏览器只作为应用程序的一个起点或者安装工具。  以下是一个例子,可以用做模板: 
   1. <?xml version="1.0" encoding="GBK"?> 
   2. <jnlp 
   3.     <!-- 文件兼容的JNLP版本--> 
   4.     spec="1.0+" 
   5.     <!-- 程序的绝对位置,其它的相对URL都相对于这个位置 --> 
   6.     codebase="http://210.43.32.199/apple/" 
   7.     <!-- 本文件的相对URL --> 
   8.     href="draw.jnlp"> 
   9.     <information> 
  10.         <!-- 程序标题 --> 
  11.         <title>画图</title> 
  12.         <!-- 程序制作者 --> 
  13.         <vendor>Kevin Ma</vendor> 
  14.         <!-- 关于这个程序的更多信息的Web页,这个页的URL会被显示在JAWS的应用程序管理器上 --> 
  15.         <homepage href="http://210.43.32.199/apple/drawpic.html/"/> 
  16.         <!-- 下面元素会在JAWS上显示--> 
  17.         <description>画图</description> 
  18.         <description kind="short"> 
  19.         一个简单的画图软件 
  20.         </description> 
  21.         <!-- 指向一个jpg或gif文件的URL,它会被作为一个图标显示在JAWS的应用程序管理器中--> 
  22.         <icon href="images/draw.gif"/> 
  23.         <!--声明程序在被下载后,不用再访问服务器即可运行--> 
  24.         <offline-allowed> 
  25.     </information> 
  26.     <security> 
  27.         <!-- 请求给予足够的权限对本地机进行访问,这就要求所有的jar 
  28.                        都要被签名。对于不访问本地机的程序,此项并非必需 
  29.         <all-permissions> 
  30.         --> 
  31. </security> 
  32.     <resources> 
  33.         <!-- 指定程序支持的JRE版本。可以指定多个,会按优先顺序检查 --> 
  34.         <j2se version="1.4"/> 
  35.         <!-- 指定包含代码和数据的jar文件的相对URL。 --> 
  36.         <jar href="draw_applet.jar"/> 
  37.         <!-- 指定将被按需下载的jar文件 
  38.         <jar href="lib/backgrounds.jar"/> 
  39.         --> 
  40.     </resources> 
  41.     <!-- 指定启动程序的主类 --> 
  42.     <application-desc main-class="draw.DrawPic"/> 
  43. </jnlp> 
4)为这个JNLP创建一个链接: 
<a href="colorPicker.jnlp">ColorPicker</a> 
5)将你的应用程序上传到服务器上 
5.注释 
用途:documentation、编译器指令、运行时检查。 
例子一: 
public class AnnotateOne { 
    @Overrides 
    public String toSting() { 
        return("One"); 
    } 

这个在编译的时候会检查是不是override了方法,要是没有则会出错。 
并且编译时可以消除某一个警告: 
import java.util.Vector; 
@SuppressWarnings("unchecked","unused","semicolon") 
public class AnnotationFour { 
    void show() { 
        Vector vec = new Vector(); 
        vec.add("one"); 
    } 

你可以定义自己的注释: 
import java.lang.annotation.Documented; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
@Documented 
@Retention(RetentionPolicy.RUNTIME)//annotation的作用期间 
@interface Copyright {//它类似于新创建一个接口类文件 
    String cstr() default "Copyright (c) 2007-2008"; 
    String comp() default "gnuhpc"; 
    int version() default 1; 

@CopyrightVTC 
public class AnnotationFive { 
    public int returnOne() { 
        return(1); 
    } 
}

 




本文转自gnuhpc博客园博客,原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822255.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值