• 【Java学习笔记】程序发布


    作者: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/

  • 相关阅读:
    html标签
    正则表达式判断号码靓号类型
    power函数:求底的n次幂
    php5.3的新特性
    xml方式操作txt文件
    什么是闭包?
    php设计模式单例模式
    面试总结
    统计ip代码
    XSL语言学习
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822255.html
Copyright © 2020-2023  润新知