现在的位置: 首页 > 综合 > 正文

【Java学习笔记】程序发布

2012年12月09日 ⁄ 综合 ⁄ 共 3952字 ⁄ 字号 评论关闭

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

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/

抱歉!评论已关闭.