zoukankan      html  css  js  c++  java
  • 【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/

  • 相关阅读:
    Data Base mysql备份与恢复
    java 乱码问题解决方案
    【知识强化】第二章 物理层 2.1 通信基础
    【知识强化】第二章 进程管理 2.2 处理机调度
    【知识强化】第二章 进程管理 2.1 进程与线程
    【知识强化】第一章 操作系统概述 1.3 操作系统的运行环境
    【知识强化】第一章 网络体系结构 1.1 数据结构的基本概念
    【知识强化】第一章 网络体系结构 1.2 计算机网络体系结构与参考模型
    【知识强化】第一章 网络体系结构 1.1 计算机网络概述
    【知识强化】第一章 操作系统概述 1.1 操作系统的基本概念
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822255.html
Copyright © 2011-2022 走看看