【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);
}
}