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